Dies ist Follow-up Frage von Does argument dependent lookup only search namespaces or classes too?, in der @ David Rodríguez sagte "ADL wird in den einschließenden Namespace des Typs, und auch innerhalb der Typ selbst aussehen". Vielleicht habe ich ihn falsch verstanden, was er versucht zu sagen, aber ich habe versucht, dieses Beispiel:Sucht ADL nicht statische Elementfunktionen?
struct foo{
static void bar(foo* z){}
};
int main(){
foo* z;
bar(z);
}
Es ist nicht kompiliert, produziert wird der Fehler „‚bar‘wurde in diesem Gültigkeitsbereich deklariert“. Ist es so, dass ADL die statische Elementfunktion nicht berücksichtigt? Ich meine in dem Beispiel verbundenen Klasse ist foo
also würde ADL nicht innerhalb der Klasse aussehen? . Kann mir bitte jemand die Regeln hier vereinfachen?
Bump ... die gepostete Antwort adressiert nicht die Frage, warum ADL nicht 'bar' in diesem Code findet, es geht und spricht stattdessen über Friend-Funktionen –