template<int N>
struct S
{
void foo()
{
sizeof( S ); // (*)
sizeof( S<N> );
}
};
int main()
{
S<5> s;
s.foo();
return 0;
}
このコードは正常にコンパイルされます (VS2010) が、(*)文字列について疑問があります。S私の意見とは異なりS<N>、完全な型ではありません。なぜコンパイラはそのサイズを知っているのですか? このような状況について、標準は何と言っていますsizeofか?