While experimenting with the recent g++-5 compiler, I wrote below statement in a file:
template<T> T a;
template<> int a = 1;
Which results in:
warning: too many template headers for
a
(should be 0)
Also effectively, it doesn't really specialize a<int>
. e.g.
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?
}
What is the mystery about this syntax?