目的 (void) 在多动作更改 for 循环的一部分

Purpose of (void) in a multiple-action change part of a for loop

本文关键字:for 循环 一部分 void 目的      更新时间:2023-10-16

std::uninitialized_copy的示例代码 at http://en.cppreference.com/w/cpp/memory/uninitialized_copy包含一个以以下内容开头的 for 循环:

  for (; first != last; ++first, (void) ++current)

其中,(void)的目的是什么?没有它似乎可以正常工作。

你"必须"在通用代码中执行此操作,因为从技术上讲,允许用户重载operator,,以便他们的迭代器类做奇怪的事情。强制转换可防止发现和应用过载。

标准库算法保证不会调用算法中超出用户函数的任何用户函数。如果没有值丢弃强制转换,循环将调用用户定义的重载逗号运算符。

有关讨论,请参见 LWG 第 2133 期。