Por que a pesquisa dependente de argumento foi inventada?

Por que a pesquisa dependente de argumento (ADL) foi inventada? É só para que possamos escrevercout << stuff ao invés destd::operator<<(cout, stuff)? Se for esse o caso, por que a ADL não se limitou aos operadores, e não a todas as funções?

Poderia a introdução da ADL ter sido evitada se o C ++ tivesse alguma outra maneira de gerar saída genérica de tipos internos e definidos pelo usuário, por exemplo, um tipo seguroprintf via modelos variados?

questionAnswers(5)

yourAnswerToTheQuestion