2
均勻地返回void我有一個輔助功能是這樣的:處理方法與方法返回值
template<typename T, typename R, typename Arg0>
void callMethod(Data *data, T &object, R (T::*method)(Arg0)) {
push(data, (object.*method)(get<Arg0>(data, 1)));
}
其中push
推導致成數據,並獲取get
從參數數據。使用boost預處理器我已經爲各種參數定義了這個函數。
問題是,當一個方法返回void
(R
是void
)代碼不編譯,因爲void
不是有效的參數/參數到push
功能。在void
返回值的情況下,我想只調用該方法而不要調用push
。最好的辦法是什麼?
重載呼叫沒有幫助的,然後到callMethod
是模糊的:
template<typename T, typename Arg0>
void callMethod(Data *data, T &object, void (T::*method)(Arg0)) {
(object.*method)(get<Arg0>(data, 1));
}
重載應做工精細;歧義被解決,有利於第二次重載。你會得到什麼錯誤? – ecatmur
@ecatmur:VS 2012問題C2668 - 對重載函數的模糊調用。 –