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
か?