C++ offers three methods for injecting a namespace constituent into the current scope. The first is a using-directive, which renders every member of a namespace visible in the current scope. The second is a using-declaration, which is more selective and enables the injection of a single component from a namespace. Finally, a fully qualified name uniquely identifies a namespace member.
The argument-dependent lookup, or Koenig lookup, captures the programmer's intention without forcing him or her to use wearying references to a namespace.
This article originally appeared in the September 1999 issue of “C++ Report.”