(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;
}
Run Code Online (Sandbox Code Playgroud)
小智 103
有可能超载operator,.转换任一操作数以void防止调用任何重载操作符,因为重载操作符不能接受void参数.
operator,如果有的话,它可以避免调用重载.因为类型void不能是函数(运算符)的参数.
另一种方法是插入void()中间:
++__first, void(), ++__result
Run Code Online (Sandbox Code Playgroud)