类完成作用域中的C++11名称重新评估?

5

在C++ 3.3.7.2 [basic.scope.class]中提到:

类S中使用的名称N应该在其上下文中引用相同的声明,并且在重新评估S的完成范围时也应该如此。

请举一个示例,说明在类S中使用的名称N在其上下文中引用的声明与在重新评估S的完成范围时引用的声明不同的翻译单元。


可能是typedef改变了含义的重复问题。 - Tony Delroy
1个回答

1
struct X {};
struct Y {};

typedef X N;

struct S
{
    N n;
    typedef Y N;
};

$ g++ test.cpp 
9:15: error: declaration of ‘typedef struct Y S::N’ [-fpermissive]
4:11: error: changes meaning of ‘N’ from ‘typedef struct X N’ [-fpermissive]

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接