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