C++ 中 [in] 相等运算符的求值顺序?

Order of evaluation of [in]equality operator in C++?

C++ 中相等运算符的求值顺序是什么?

我看到很多代码示例,例如 this

template <class ForwardIt, class Compare>
ForwardIt is_sorted_until(ForwardIt first, ForwardIt last, Compare comp) 
{
    if (first != last) {
        ForwardIt next = first;
        while (++next != last) {
            if (comp(*next, *first))
                return next;
            first = next;
        }
    }
    return last;
}

并在 while (++next != last) - 左侧是否先于右侧评估?

顺序未指定,like most binary operators in C++。编译器首先评估 ++nextlast 是完全合法的,因此如果 nextlast 是对同一基础变量的引用,您将进入未定义的行为领域(在这种情况下,没有问题)。