我想引用內置運算符的函數指針,但我不知道如何指定特定的類型重載。是否可以獲取內置標準運算符的函數指針?
我有以下的模板類簽名:
template<typename ParamsType, typename FnCompareType>
class MyAction
{
public:
MyAction(ParamsType& arg0, ParamsType& arg1, FnCompareType& fnCpmpare)
: arg0_(arg0), arg1_(arg1), fnCompare_(fnCpmpare) {}
bool operator()()
{
if((*fnCompare_)(arg0_,arg1_)
{
// do this
}
else
{
// do s.th. else
}
}
private:
ParamsType& arg0_;
ParamsType& arg1_;
FnCompareType& fnCompare_;
}
,並希望使用這樣的語法:
void doConditional(int param1, int param2)
{
MyAction<int,&::operator>=> action(param1,param2);
if(action())
{
// Do this
}
else
{
// Do that
}
}
但是,這並不編譯:
error: ‘::operator>=’ has not been declared
什麼我可以參考這種內在的靜態操作嗎?
'ACTION_P1(MyAction,fnCompare){...}'難道這甚至編譯?返回類型和參數的類型在哪裏? –
@MonadNewb是的,它的確如此!真正的定義更加複雜。 [tag:googlemock]通過模板參數列表推遲操作參數的類型。 –
感謝您刪除googlemock的詳細信息,以使您的問題更加清晰。對於未來的參考,當你做這樣的簡化讓你的問題的核心問題,您應該與純醇」 C++編譯,這樣其他人可以複製並粘貼代碼,並將其編譯爲-就是一個例子。 –