在试验最近的 g++-5 编译器时,我在一个文件中写了以下语句:
template<T> T a;
template<> int a = 1;
结果是:
警告:太多的模板标题
a
(应该是 0)
同样有效的是,它并没有真正专业化a<int>
。例如
template<typename T> T a;
template<> int a = 1;
int main () {
std::cout << a<double> << "\n"; // prints 0; OK
std::cout << a<int> << "\n"; // prints 0! why not 1?
}
这种语法有什么奥秘?