¿Por qué se inventó la búsqueda dependiente de los argumentos (ADL)? ¿Es solo para que podamos escribir cout << stuff
en lugar de std::operator<<(cout, stuff)
? Si ese es el caso, ¿por qué ADL no estaba limitado a los operadores en lugar de a todas las funciones?¿Por qué se inventó la búsqueda dependiente de argumentos?
¿Se podría haber evitado la introducción de ADL si C++ hubiera tenido alguna otra forma de hacer una salida genérica de ambos tipos incorporados y definidos por el usuario, por ejemplo un tipo seguro printf
mediante plantillas variadic?
Exactamente. Sin ADL, estarías escribiendo ' :: ...' * mucho *. O mejor dicho, probablemente usarías 'using namespace' mucho, lo que efectivamente sería deshabilitar una característica muy agradable del lenguaje. –
DevSolar