Aviso C ++ 14: muitos cabeçalhos de modelo para a variável (deve ser 0)
Ao experimentar o recente compilador g ++ - 5, escrevi abaixo a declaração em um arquivo:
template<T> T a;
template<> int a = 1;
O que resulta em:
aviso: muitos cabeçalhos de modelo paraa
(deve ser 0)
Também efetivamente, ele realmente não se especializaa<int>
. por exemplo.
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?
}
Qual é o mistério dessa sintaxe?