2012-03-24 10 views
1

아무도이 함수 객체가 지정된 유형을 필요로하지 않는 이유를 말할 수 있습니까?왜이 함수 객체는 지정이 필요하지 않습니까?

class StringPtrTmplLess 
{ 
public: 
    template<typename PtrType> 
    bool operator()(const PtrType * lhs, const PtrType * rhs) 
    { 
     return *lhs < *rhs; 
    } 
}; 

int main() 
{ 
    set<string*, StringPtrTmplLess> s2; 
    return 0; 
} 

컴파일러는 어떤 유형의 StringPtrTmplLess를 초기화 할 것인지 컴파일러에서 어떻게 알 수 있습니까?

답변

3

template argument deduction 이는 템플릿 인수가 이고 함수 호출에 전달 된 인수의 형식에서임을 의미합니다. 이 유형 공제는 컴파일러가 수행합니다. 상세하게 설명하는 the link을 검토하십시오.

관련 문제