for循环的多动作变更部分中的(void)的目的

时间:2016-02-20 13:36:20

标签: c++

http://en.cppreference.com/w/cpp/memory/uninitialized_copy std::uninitialized_copy的示例代码 包含一个以:

开头的for循环
  for (; first != last; ++first, (void) ++current)

其中,(void)的目的是什么? 没有它,似乎工作得很好。

2 个答案:

答案 0 :(得分:4)

你“必须”在通用代码中执行此操作,因为从技术上讲,允许用户为其迭代器类重载operator,以执行奇怪的操作。演员阵容可以防止发现和应用过载。

答案 1 :(得分:4)

标准库算法保证不会调用除算法之外的任何用户功能。如果没有丢弃值的强制转换,循环将调用用户定义的重载逗号运算符。

请参阅LWG issue 2133进行讨论。