2012-04-02 6 views
3

가 나는 기능은기본 인수 V 템플릿 우선 순위

내가 정수 인수 f를 호출하는 경우 우선적으로 호출 될 이들의
template<typename T> void f(T&& t, int x = 1); 
void f(int x = 0); 

비슷한 설정 과부하 한 경우? 예 :

f(5); 

답변

5

void f(int x = 0);이 호출됩니다. 과부하 해결 중에는 인수 유형이 완전 일치 (즉 전환이 필요 없음) 인 – §13.3.3/1을 참조하면 템플릿이 아닌 템플릿이 항상 우선합니다.

(참고 비 템플릿 과부하 대신 void f(long x = 0);이었고 callsite은 동일하게 유지, 또는 과부하가 같은 남아 있지만 callsite 대신 f(5L); 인 경우, 템플릿 과부하가 대신 호출 될 경우.)