2013-05-09 21 views
5

它說在C++ 3.3.7.2 [basic.scope.class]C++ 11名稱在一個類的完成範圍內重新評估?

甲名稱N在類S應指在其上下文相同的聲明中,並當在S完成的範圍重新評估。

什麼是翻譯單元,其中的一類S使用的名稱N的示例指的是在其上下文中的不同的聲明比當它被重新評估中的S完成的範圍?

+0

可能重複的[typedef changes meaning](http://stackoverflow.com/questions/12187549/typedef-changes-meaning) – 2013-05-09 01:50:31

回答

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]