C++1y/C++14 N3690 によると、変数テンプレートの特殊化の型は、プライマリ テンプレートの型と同じである必要がありますか?
template<int x>
char y = f(x);
template<>
double y<42> = g();
もしそうなら、どういうわけかプライマリを未定義のままにすることは可能ですか?
template<int x>
???? y = ???; // undefined
template<>
double y<42> = g();
これはドラフトのどこでカバーされていますか?
クラス テンプレートの同等の機能は次のようになります。
template<int x>
struct S
{
static char y;
};
template<>
struct S<42>
{
static double y;
};
と
template<int x>
struct S; // undefined
template<>
struct S<42>
{
static double y;
};