为什么std :: transform和类似函数将'for'循环增量转换为(void)?
问题描述:
以下代码中(void)++ __ result
的目的是什么?
What is the purpose of (void) ++__result
in the code below?
std的实现:: transform:
Implementation for 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;
}
答
可以重载 operator,。将任何一个操作数强制转换为 void
可以防止调用任何重载运算符,因为重载运算符不能采用 void
参数。
It is possible to overload operator,
. Casting either operand to void
prevents any overloaded operator from being called, since overloaded operators cannot take void
parameters.