Overload

Overload Resolution Funnel

오버로드 해석은 후보를 모으고, 호출 가능한 함수만 남긴 뒤, 가장 적합한 매치를 하나로 고르는 과정이다.

함수 호출이 하나의 오버로드로 좁혀지는 과정

best match

후보 수집

이름이 같은 함수와 접근 가능한 선언을 모은다.

Viable 필터

인자 개수와 변환 가능성을 만족하는 함수만 남긴다.

순위 비교

정확한 일치, 승격, 변환 순위로 더 적합한 후보를 고른다.

모호성

동등하게 적합한 후보가 둘 이상이면 컴파일 오류가 난다.

callcandidatesviablerankbest or ambiguous
호출 선택

모호한 오버로드는 컴파일러가 똑똑하지 않아서가 아니라 규칙상 하나를 고를 근거가 없다는 뜻이다.