我在迭代器的一个单元测试中有下一个代码:
EXPECT_TRUE(++it != it++);
it
尊重标准迭代器要求的地方。
据我所知,同一序列点中同一变量的 2 次修改是未定义的行为(!=
不是序列点)。
考虑到这两个operator++
版本都是具有return
语句(序列点)的函数,未定义的行为是否适用于这些情况?如果不是,为什么我收到"Multiple unsequenced modifications to it"
有关 Apple LLVM 5.0 编译器的警告?
当函数被内联时会发生什么(很可能它们会被内联!)?