为什么这个函数对象不需要指定?

时间:2012-03-24 07:14:42

标签: c++

可以告诉为什么这个函数对象不需要指定类型吗?

    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的指定类型

1 个答案:

答案 0 :(得分:3)

这是因为template argument deduction这意味着模板参数是从传递给函数调用的参数类型推导。此类型推导由编译器完成。浏览the link,详细解释它。