为什么std :: transform和类似的'for'循环增量转换为(void)?

(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; } 

有可能超载operator, 。 将任一操作数转换为void防止重载操作符被调用,因为重载操作符不能使用void参数。

它避免了重载operator,调用operator,如果有的话。 因为voidtypes不能是一个函数(操作符)的参数。

另一种方法是在中间插入void()

 ++__first, void(), ++__result