【发布时间】:2013-01-07 10:16:25
【问题描述】:
假设您有以下(格式错误的)程序:
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++ 标准对这些情况有何规定?
【问题讨论】:
-
另见stackoverflow.com/questions/7182359/…。这两个关键字是“实例化点”、“两阶段查找”和“(非)依赖名称”。等等,那是三个关键词。
-
哦,废话,我想撤销我的近距离投票但不能。这对我来说很愚蠢。
-
没问题,感谢您的链接。
标签: c++