name lookup

이름 검색과 using

네임스페이스를 쓰면 이름이 충돌하지 않지만, using을 넓게 열면 같은 이름이 다시 한 호출 지점에 모일 수 있다.

호출 지점에서 찾는 순서

탐색 경로
1

현재 블록

지역 변수와 함수 안 선언이 가장 먼저 보인다.

2

명시 접두어

`std::cout`처럼 네임스페이스를 지정하면 후보가 분명해진다.

3

using 선언

특정 이름 하나만 현재 스코프 후보로 가져온다.

4

using 지시어

네임스페이스 전체를 열어 편하지만 모호성이 커진다.

using 위치별 영향

범위 선택 기준
header

포함한 모든 파일로 이름 후보가 퍼진다.

피하기

.cpp top

파일 내부 구현에서만 영향을 준다.

신중히

function

짧은 예제나 특정 함수 안에서만 편의성을 얻는다.

권장

namespace { }

소스 파일 전용 헬퍼를 외부 이름 검색에서 숨긴다.

격리

충돌 신호 같은 이름의 함수가 둘 이상 후보가 되면 호출이 모호해진다. 이때는 using을 줄이고 `library::name`처럼 출처를 명시한다.