gpt4 book ai didi

c++ - 后递增 weakly_incrementable 的用处?

转载 作者:行者123 更新时间:2023-12-03 06:58:30 26 4
gpt4 key购买 nike

我研究了weakly_incrementable最近的概念,我想知道后增量运算符有什么用,因为该概念没有定义对操作结果的任何要求。

operator++(int) 返回 void 真的可以吗?

void operator++(int) { ++(*this); }

它似乎符合该概念的其他要求(比如它不必是可复制的)并且还符合 incrementable 概念引入的要求使得 i++ 很有用,但在那种情况下,我想知道为什么 i++ 是由这个概念定义的。毕竟,当你需要一些东西来实现 weakly_incrementable 概念时,你总是可以使用 ++i 而不是 i++ 因为

  1. 除了 ++i 已经提供的属性外,你不能依赖 i++ 有任何有用的属性,但是
  2. i++ 可能效率更低(例如,当它创建迭代器的拷贝时)。

最佳答案

该设计决策记录在 P0541 中.

Is it actually okay to return void for operator++(int)?

是的。这是。如论文中所述,进行了一次特定的民意调查。

也考虑过完全删除后缀增量,但是:

The authors of the Ranges TS strongly prefer keeping the postfixincrement operator for input iterators. Consider the following fairlycommon (anti-)pattern:

for (auto i = v.begin(); i != v.end(); i++) {
// ...
}

Aside from concerns over the cost of post-increment, there is nothing wrong with this code per se, and the authors see nocompelling reason to break it. And by permitting i++ to return void,we would actually be mitigating the performance problem.

关于c++ - 后递增 weakly_incrementable 的用处?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64854703/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com