假设您有以下(格式错误的)程序:
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 中的错误,因为模板没有实例化?
- 铿锵有什么魔力来发现这个错误?
- C++ 标准对这些情况有什么看法?