在C++ 3.3.7.2 [basic.scope.class]中提到:
类S中使用的名称N应该在其上下文中引用相同的声明,并且在重新评估S的完成范围时也应该如此。
请举一个示例,说明在类S中使用的名称N在其上下文中引用的声明与在重新评估S的完成范围时引用的声明不同的翻译单元。
在C++ 3.3.7.2 [basic.scope.class]中提到:
类S中使用的名称N应该在其上下文中引用相同的声明,并且在重新评估S的完成范围时也应该如此。
请举一个示例,说明在类S中使用的名称N在其上下文中引用的声明与在重新评估S的完成范围时引用的声明不同的翻译单元。
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]