最近の 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?
}
この構文の謎は何ですか?