我在使用类型别名和嵌套类/范围时遇到了一个奇怪的问题。以下代码被 clang 3.3 愉快地接受,但被 nuwen MinGW 4.8.1 拒绝:
template<typename T>
struct container
{
};
struct Outer
{
using type_t = int;
struct Inner
{
using container_t = container<type_t>;
using type_t = Outer::type_t; //error in MinGW
};
};
使用 gcc 生成的错误:http: //ideone.com/cba6Fp(与我系统上的错误匹配)
要修复 MinGW 中的错误,您只需将定义container_t
移至之后type_t
(这是有道理的,并且是我最初应该做的) - 但是我的问题是为什么这用 clang 而不是 MinGW 编译?代码是有效还是无效?