La seguente definizione del namespace non viene compilata quando la prima dichiarazione viene commentata. Se la prima dichiarazione di foo
non è commentata, allora viene compilata correttamente.qualifica esplicita nella dichiarazione C++
namespace Y
{
//void foo();
void ::Y::foo(){}
}
La parte rilevante nello standard (§8.3¶1) dice:
Quando il dichiaratore-id è qualificato, la dichiarazione deve fare riferimento a un membro precedentemente dichiarato
Comprendo che questa regola impedisce l'introduzione di nomi in altri spazi dei nomi. Mi chiedo se tale regola potrebbe essere rilassata per consentire qualificata-id riferendosi allo spazio dei nomi corrente.
Alla persona che ha votato per la chiusura perché non è chiaro cosa sto chiedendo: La domanda è già nel testo: * C'è qualche problema se questa regola è rilassata per consentire l'identificazione qualificata riferendosi allo spazio corrente? * – Hector
Hai un caso d'uso valido per questa regola di rilassamento? –
@KarolyHorvath: define "valid" ;-) ... la generazione automatica di codice potrebbe avvantaggiare se tutti gli identificatori potessero includere i loro ambiti. Si noti che questo riguarderebbe programmi che scrivono programmi non necessariamente per il consumo umano. – Hector