name lookup

이름 탐색은 가까운 범위부터 찾고, using은 후보를 늘린다

`print()`처럼 소속이 없는 이름을 호출하면 컴파일러는 가까운 범위부터 찾습니다. using은 편하지만 후보를 늘려 모호성을 만들 수 있습니다.

1

지역 범위

함수 안 지역 변수와 함수 이름을 먼저 찾는다.

2

현재 네임스페이스

현재 소속의 이름이 있는지 확인한다.

3

using 후보

using으로 가져온 이름이 후보에 들어온다.

4

모호성 검사

같은 이름 후보가 둘 이상이면 호출이 실패한다.

안전한 호출 app::print();

소속을 직접 붙여 후보를 하나로 고정한다.

모호한 호출 using namespace app; using namespace vendor; print();

두 소속의 print가 동시에 후보가 되어 컴파일러가 고를 수 없다.

이름이 짧아지는 편의보다 후보가 얼마나 늘어나는지를 먼저 본다.