Warum findet ADL keine Funktionsvorlagen?

Welcher Teil der C ++ - Spezifikation beschränkt die argumentabhängige Suche darauf, Funktionsvorlagen in der Menge der zugeordneten Namespaces zu finden? Mit anderen Worten, warum wird der letzte Aufruf inmain unten nicht kompilieren?

namespace ns {
    struct foo {};
    template<int i> void frob(foo const&) {}
    void non_template(foo const&) {}
}

int main() {
    ns::foo f;
    non_template(f); // This is fine.
    frob<0>(f); // This is not.
}

Antworten auf die Frage(8)

Ihre Antwort auf die Frage