对于以下代码:
template<class _InIt,
class _Ty,
class _Fn2> inline
_Ty accumulateSimplePtr(_InIt _First, _InIt _Last, _Ty _Val, _Fn2 _Func)
{ // return sum of _Val and all in [_First, _Last), using _Func
for (; _First != _Last; ++_First)
{
if(is_class<std::iterator_traits<_InIt>::value_type>::value)
_Val = _Func(_Val, (*_First)());
else
_Val=_Func(_Val, *_First);
}
return (_Val);
}
我如何判断 _InIt 是指向类/结构还是指向诸如 double 之类的 pod 的交互器?
如果它指向一个双精度,我想使用 *_First 来获取数据,如果它指向一个类,我会使用 (*_First)() 来获取实际数据(假设该类有一个重载的运算符()。
我尝试了上述方法,但无法使用“_Val=_Func(_Val, *_First);”行编译,表示无法将 MyObj 转换为加倍。