以下代码中(void) ++__result
的目的是什么?
std :: transform的实现:
// std::transform
template <class _InputIterator, class _OutputIterator, class _UnaryOperation>
inline _LIBCPP_INLINE_VISIBILITY
_OutputIterator
transform(_InputIterator __first, _InputIterator __last, _OutputIterator __result, _UnaryOperation __op)
{
for (; __first != __last; ++__first, (void) ++__result)
*__result = __op(*__first);
return __result;
}
答案 0 :(得分:103)
可以重载operator,
。将任一操作数强制转换为void
可防止调用任何重载运算符,因为重载运算符无法获取void
个参数。
答案 1 :(得分:5)
如果有的话,它可以避免调用重载的operator,
。因为类型void
不能是函数(运算符)的参数。
另一种方法是在中间插入void()
:
++__first, void(), ++__result