谁能说出为什么这个函数对象不需要指定的类型?
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?
最佳答案
这是因为template argument deduction的原因,这意味着模板参数是从传递给函数调用的参数类型推导出来的。此类型推导由编译器完成。通过the link进行详细说明。