【发布时间】:2012-10-16 23:46:57
【问题描述】:
我了解命名空间不能是模板参数。看到问题,"template specialized on a namespace":
给定:
namespace A { class Foo; class Bar; } namespace B { class Foo; class Bar; }我想在命名空间
A或B上对一个类进行模板化,以便以下工作:template<name> class C { name::Foo* foo; name::Bar* bar; };
我想知道为什么会这样。我知道模板不是结构,但是编译器的设计是否存在技术限制?还是在实现此功能时需要做出重大权衡?
【问题讨论】:
-
有趣。我从来不需要这个,但我想我可以明白你为什么想要它......也许......有时............另一方面,这真的是 我们如何使用命名空间?这是他们的设计目的吗?不,我不这么认为。
-
这只是属于“不是因为不是”的范畴。
-
可能会为 C++1x 提出一个很好的建议。
-
您的
C模板中缺少几个typename关键字。 -
有人尝试为它制定标准提案吗?
标签: c++ templates namespaces language-design