Этот код не использует extern
, но он более или менее подтверждает это. Обратите внимание, что он не определяет переменную вне пространства имен, он вместо этого определяет function вне пространства имен.
//demo.cpp
int i = 100;
namespace N
{
int i = 200;
struct X{};
void f(const X&);
}
void N::f(const X&)
{
cout << i << endl; //what will it print?
}
int main()
{
N::X x;
f(x); //use argument-dependent lookup (ADL) to find the function!
}
Выход:
200
Демо онлайн: http://www.ideone.com/KCqUV
Я добавил ADL, чтобы сделать его более интересным!