ExpertiDict

C++ · Avançado · Inglês · Técnico

ADL

ˌeɪ.diː.ˈɛlsigla

Argument-dependent lookup: regra que, na chamada de uma função sem qualificação, também procura o nome nos namespaces dos tipos dos argumentos. Por isso swap(a, b) acha a versão certa.

Onde usar

Explica por que o operator<< de um tipo seu, definido no mesmo namespace, é achado sem prefixo, e justifica o idioma using std::swap seguido de swap(a, b). Também causa ambiguidades surpreendentes.

Em código

namespace app {
  struct T {};
  void ver(T) { puts("app"); }
}
app::T t;
ver(t);  // acha app::ver por ADL

Exemplos

ADL finds that operator in the namespace of the argument.

A ADL acha esse operador no namespace do argumento.

Call swap unqualified so ADL can pick the custom version.

Chame swap sem qualificar para a ADL escolher a versão do tipo.

Cuidado

ADL não considera o tipo de retorno; e chamadas qualificadas como std::swap(a, b) desligam a ADL.

Sinônimos

Koenig lookup

Origem

Sigla de Argument-Dependent Lookup, busca dependente de argumento.

Veja também

Todos os termos de C++