我知道命名空间不能是模板参数。请参阅问题“专门用于命名空间的模板”:
鉴于:
namespace A { class Foo; class Bar; } namespace B { class Foo; class Bar; }
我想在命名空间上对一个类进行模板化,
A
或者B
使以下工作:template<name> class C { name::Foo* foo; name::Bar* bar; };
我想知道为什么会这样。我知道模板不是结构,但编译器的设计是否存在技术限制?或者实现这个功能是否有一些重大的权衡?