struct A
{
enum InnerEnum { X };
A(InnerEnum x)
{}
};
int main()
{
A a(X);
}
Il compilatore si lamenta: error C2065: 'X' : undeclared identifier
Perché C++ 11 non supporta la ricerca del nome in questo modo?
Il compilatore sa quello del costruttore tipo di parametro è, così quando passo X come argomento, il compilatore dovrebbe sapere che è un argomento valido.
So che questo non è ADL (ricerca del nome dipendente dall'argomento, noto anche come Koenig Lookup), ma penso che sia utile e molto utile. Perché io non devo scrivere come segue:
A a(A::X);
penso che la regola ADL dovrebbe essere generalizzata ad un caso del genere.
Ho ragione?
Questo è come l'inverso di ADL ... FDL (ricerca dipendente dalla funzione). –
Hai considerato come questo si applicherebbe quando hai anche una variabile locale chiamata 'X'? E a prescindere, il modo in cui leggo la tua domanda, stai dicendo che questo è C++ non valido, e stai chiedendo se lo standard C++ dovrebbe cambiare. Questo è il posto sbagliato per quello. – hvd
Grazie, hvd. Ci hai dato una motivazione convincente. – xmllmx