可以告诉为什么这个函数对象不需要指定类型吗?
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的指定类型答案 0 :(得分:3)
这是因为template argument deduction这意味着模板参数是从传递给函数调用的参数类型推导。此类型推导由编译器完成。浏览the link,详细解释它。