Questa è la domanda successiva da Does argument dependent lookup only search namespaces or classes too?, in cui @David Rodríguez ha dichiarato che "ADL cercherà nello spazio dei nomi incluso del tipo e anche all'interno dello il tipo stesso". Forse ho avuto lo sbagliato ciò che ha cercato di dire, ma mi è stato provare questo esempio:Non ADL ricerca le funzioni membro statiche?
struct foo{
static void bar(foo* z){}
};
int main(){
foo* z;
bar(z);
}
Non compila, producendo l'errore "‘bar’non è stato dichiarato in questo ambito". È il caso che ADL non consideri la funzione membro statico ?. Voglio dire nella classe associata ad esempio è foo
, quindi ADL non dovrebbe apparire all'interno della classe? . Qualcuno può per favore semplificare le regole qui?
Bump ... la risposta postata non affronta la questione del perché ADL non trova 'bar' in questo codice, va e parla invece delle funzioni amico –