template <typename elemType, typename Comp = less<elemType> >
class LessThanPred {
public:
LessThanPred(const elemType &val) : _val(val){}
bool operator()(const elemType &val) const
{ return Comp(val, _val); }
void val(const elemType &newval) { _val = newval; }
elemType val() const { return _val; }
private:
elemType _val;};
這是Essential C++的一個例子。 Comp
顯然是一個函數對象類的名字。爲什麼我可以直接使用Comp(val, _val)
?通常我想我應該先定義一個這樣的函數對象:Comp comp
,然後調用comp
而不是Comp
。功能對象作爲模板參數
比較時,一個類型參數,而不是一個函數對象類名稱。順便說一句,你實際上可以定義一個Comp Comp對象,然後調用comp。 – user2296177
您是否實例化/使用'LessThanPred'的函數調用操作符?由於它是模板成員,因此只有在實例化時才能正確檢查。 –
由於引用不正確,我正在投票結束此題,因爲引用不正確 –