clang ++和g ++不同意以下代码的有效性:
template<typename T>
struct thing {
struct nested {
typename thing::type num;
};
using type = int;
};
所有版本的g ++(4.8及更高版本)都可以毫无问题地编译它,所有版本的clang(3.0及更高版本)都抱怨thing::type
没有被定义。
显然如果thing
不是模板,那么编译器都不接受这个,但是谁在这里是正确的,为什么?
提前致谢。