class A{}
class B{}
namespace Other{
class C {}
class D {}
}
template<typename T> T func() {}
template<typename T> T func <Other::T>() {}
为什么不能为依赖于不同命名空间中的类型的函数设置专用版本?基本上我想要的是其他类型的所有类型的func版本和任何其他类型的另一个版本。 我是TMP编程的新手,如果这个问题对某些人来说似乎微不足道,那就很抱歉了。
答案 0 :(得分:1)
为什么不能为依赖于不同命名空间中的类型的函数设置专用版本?
因为C ++中没有语法来表示这种特殊化。
您的下一个问题可能是为什么这样的事情不存在。我不是Stroustrup,也不是委员会,甚至也不是委员会成员,所以我只能猜测。我的猜测是,这种东西最初没有被考虑过,但如果是这样的话,那么它只是被认为是一个糟糕的设计决定。
指定这种专业化在某些情况下应该如何表现也并非易事。请考虑以下示例:
namespace One{
class C;
}
namespace Other{
using One::C;
}
Other::C
应该使用哪种专业化?无论你决定什么,都会让这种方式混淆不清。