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 - 对重载函数的模糊调用。 –