Koenig Lookup

De ccppbrasil.org

Argument Dependent Lookup ou Koenig lookup, é uma forma do compilador encontrar o contexto de uma função através do seu argumento. Desta forma, é possível por exemplo, retirar uma ambiguidade de namespaces apenas pelo argumento. Acredito que quem já leu sobre este assunto deva ter visto exemplos com namespaces. Deixo aqui um exemplo bem curioso que não usa namespaces, aonde a implementação da função é encontrada dentro da definição da classe.


using namespace std; 

class X 
{ 
  int i; 

  friend ostream& operator << (ostream &os, const X& x) { 
    os << x.i; 
    return os; 
  } 

  friend void func(X& x) { 
    x.i; 
  } 

public: 
  X(int ii) : i(ii){} 
}; 


int main() 
{ 
  X x(1); 
  cout << x; 
  func(x);
}

Output:

1



Original publicado em: http://paginas.terra.com.br/informatica/thiago_adams/koenig_port.htm

Ferramentas pessoais