В соответствии с С++ 1y/С++ 14 N3690, тип специализации шаблона шаблона должен быть таким же, как тип первичного шаблона?
template<int x>
char y = f(x);
template<>
double y<42> = g();
И если да, можно ли как-нибудь оставить основной undefined?
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;
};