这些陈述按照标准有效吗?
std::string str{"123"};
auto it = str.begin();
--it;
++it; // Does *it point to character '1' now?
我在 g++ 4.7.2 和 clang++ 3.5 上尝试过这个 -*it
回报'1'
。
这是 c++11 中的标准行为吗?
不,它无效。
这是未定义的行为,如 24.2.6 [bi Direction.iterators] 指出的后置条件--it
是结果必须是可取消引用的。正如它之前指出的begin()
在您的示例中,不满足此条件,因此代码是非法的。
由于不需要诊断might似乎有效,但你不能(也不应该)依赖它。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)