首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >为什么名称空间不能是模板参数?

为什么名称空间不能是模板参数?
EN

Stack Overflow用户
提问于 2012-10-16 08:34:06
回答 2查看 10.6K关注 0票数 27

我知道命名空间不能是模板参数。请看问题,"template specialized on a namespace"

给定的

命名空间A{ class Foo;class Bar;}命名空间B{ class Foo;class Bar;}

我想在命名空间AB上创建一个类模板,以便执行以下操作:

模板类C{ name::Foo* foo;name::Bar* bar;};

我想知道为什么会这样。我知道模板不是结构,但是编译器的设计有技术上的限制吗?或者,实现此功能是否有一些重要的权衡?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-10-16 08:42:18

这将是:

  1. (IMO)不合适:名称空间避免了名称冲突。多态在它们的charter.
  2. Unnecessary:之外,它将不会实现任何使用structs.
  3. Possibly不能实现的功能:命名空间不是一个完整的、自包含的实体。命名空间的不同成员可以在不同的头中声明,甚至可以在不同的编译单元中声明。
票数 15
EN

Stack Overflow用户

发布于 2012-10-16 23:46:58

当Bjarne Stroustrup第一次在C++标准会议上讨论模板时,他提到了命名空间作为模板参数。人们的反应是怀疑的,部分原因是名称空间本身太新了,我们害怕将两个我们不理解的东西组合在一起。

票数 28
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12905951

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档