5

它在 C++ 3.3.7.2 [basic.scope.class] 中说

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

什么是翻译单元的示例,其中N类中使用的名称S在其上下文中引用不同的声明,而不是在完成的范围内重新评估时S

4

1 回答 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]
于 2013-05-09T02:44:13.030 回答