iter ++ - > empty()是一个合法的表达吗?

1 c++ post-increment

iter++->empty()法律表达吗?

iteriterator的一个vectorstring

我问,因为考虑运算符的优先级,->并且()应该在postfix增量之前,但我真的不知道操作数应该如何分组.

在我的编译器上它工作(表达式产生empty()第一个字符串的结果并iter指向第二个字符串)但我仍然想知道它是否是未定义的行为.

编辑

我刚刚找到解决方案(我认为):

iter++->empty() 应该是一样的 (*iter++).empty()

因此,考虑到关联性和优先级规则,分组应该是:

(((*(iter++)).empty) ())

那是对的吗?

Luc*_*ore 5

这是合法的,但不要这样做.

问自己这个问题是足够的理由将其分为两个陈述:

iter->empty();
iter++;
Run Code Online (Sandbox Code Playgroud)