在嵌套类中使用类型别名的不同意见

时间:2018-03-20 01:14:21

标签: c++ templates portability type-alias

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不是模板,那么编译器都不接受这个,但是谁在这里是正确的,为什么?

提前致谢。

0 个答案:

没有答案