为什么std :: transform和类似函数将'for'循环增量转换为(void)? [英] Why does std::transform and similar cast the 'for' loop increment to (void)?
本文介绍了为什么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.
这篇关于为什么std :: transform和类似函数将'for'循环增量转换为(void)?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文