次の (不適切な形式の) プログラムがあるとします。
struct A
{
A(int, int)
{
}
};
template <typename T>
class B
{
B()
{
if (sizeof (T) == 1)
{
throw A(0); // wrong, A() needs two arguments
}
}
};
int main()
{
return 0;
}
GCC はこのプログラムをエラーなしでコンパイルしますが、clang++ はエラーで拒否します。
- テンプレートがインスタンス化されていないため、GCC のバグではないと言うのは正当ですか?
- このエラーを見つけるためにclangはどのような魔法を行いますか?
- C++ 標準は、これらの状況について何と言っていますか?