Considerare il seguente programma. E 'ben formata o meno secondo lo standard C++ (i riferimenti alle parti rilevanti della norma necessarie):Tentativo di definire un membro dello spazio dei nomi tramite using-declaration
namespace X { extern int i; }
namespace N { using X::i; }
int N::i = 1;
int main() {}
sto ottenendo risultati diversi per diversi compilatori. Sto cercando di capire per quale compilatore dovrei presentare un bug report per:
Clang: dà il seguente errore del compilatore: Nessun membro chiamato 'i' nello spazio dei nomi 'N'
GCC e Visual C++ lo compila senza errori.
Per confronto la seguente dà errore del compilatore con tutti e tre i compilatori:
namespace X { void f(); }
namespace N { using X::f; }
void N::f() {};
int main() {}
Divertente, VS2013 compila, ma IntelliSence dice "Errore: spazio dei nomi" N "non ha un membro effettivo" i "' – AlexD
Penso che la risposta sia qui: [collegamento] (http://stackoverflow.com/questions/6175705/scope-of-using-declaration-within-a-namespace) – Jorj
@Supremum Puoi ottenere la tua copia dello standard C++ da leggere su https://isocpp.org/std/the-standard. – Coder