Вкл. cppreference Я вижу следующий текст:
При вызове функции вычисления значений и побочные эффекты инициализации каждого параметра имеют неопределенную последовательность относительно вычислений значенийи побочные эффекты любого другого параметра.
Однако, я не смог найти подтверждения этому в стандарте C ++ 17.
Параметры функции, как подвыражения, должнысоблюдать [intro.execution.17]:
За исключением случаев, когда указано иное, вычисления операндов отдельных операторов и подвыражений отдельных выражений не являются последовательными.[Примечание: В выражении, которое оценивается более одного раза во время выполнения программы, непоследовательные и неопределенно последовательные оценки ее подвыражений не должны выполняться последовательно в различных оценках.- примечание конца] Вычисления значений операндов оператора секвенируются до вычисления значения результата оператора.Если побочный эффект в ячейке памяти (4.4) не упорядочен относительно другого побочного эффекта в той же ячейке памяти или вычисления значения с использованием значения любого объекта в той же ячейке памяти, и они не являются потенциально одновременными (4.7),поведение не определено.[Примечание: следующий раздел налагает аналогичные, но более сложные ограничения на потенциально параллельные вычисления.- примечание конца]
Это означает, что расчет параметров функции не должен выполняться последовательно, если это не запрещено другими пунктами в стандарте.Я попытался найти подстроку «неопределенно» в стандартном тексте, и ни одно из 10 вхождений не выглядит релевантным аргументам вызова функции.
Итак, вопрос в том, являются ли параметры функции непоследовательными или неопределенно упорядоченными в C ++17