2013-05-09 10 views
5

Es heißt in C++ 3.3.7.2 [basic.scope.class]C++ 11 Name Neubewertung im abgeschlossenen Umfang einer Klasse?

Ein Name N in einer Klasse verwendet S auf die gleiche Erklärung in seinem Kontext beziehen und wenn im fertigen Rahmen von S neu bewertet .

Was ein Beispiel für eine Übersetzungseinheit ist, wo ein Name N in einer Klasse verwendet S bezieht sich auf eine andere Erklärung in ihrem Kontext als wenn es im fertigen Rahmen von S neu bewertet?

+0

mögliche Duplikate von [typedef ändert Bedeutung] (http://stackoverflow.com/questions/12187549/typedef-changes-meaning) –

Antwort

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] 
Verwandte Themen