Функциональные параметры: произвольно упорядоченные или непоследовательные?

На cppreference я вижу следующий текст:

При вызове функции вычисления значений и побочные эффекты инициализации каждого параметра неопределенно упорядочены по отношению к вычислениям значений и побочным эффектам любого другого параметра.

Однако мне не удалось найти подтверждения этому в стандарте С++ 17.

Параметры функции, как подвыражения, должны соответствовать [intro.execution.17]:

Если не указано иное, вычисления операндов отдельных операторов и подвыражений отдельных выражений не упорядочены. [Примечание: В выражении, которое оценивается более одного раза во время выполнения программы, неупорядоченные и неопределенно упорядоченные вычисления его подвыражений не должны последовательно выполняться в разных вычислениях. — примечание в конце] Вычисление значения операндов оператора выполняется до вычисления значения результата оператора. Если побочный эффект в ячейке памяти (4.4) не является последовательным по отношению либо к другому побочному эффекту в той же ячейке памяти, либо к вычислению значения с использованием значения любого объекта в той же ячейке памяти, и они потенциально не параллельны (4.7), поведение не определено. [Примечание: в следующем разделе налагаются аналогичные, но более сложные ограничения на потенциально параллельные вычисления. — примечание в конце]

Это означает, что вычисление параметров функции должно быть непоследовательным, если только это не запрещено какими-либо другими пунктами стандарта. Я попытался найти подстроку «неопределенно» в стандартном тексте, и ни одно из 10 вхождений не выглядит релевантным для аргументов вызова функции.

Итак, вопрос: являются ли параметры функции неупорядоченными или неопределенно упорядоченными в С++ 17?


person alexeykuzmin0    schedule 01.06.2018    source источник


Ответы (1)


[expr.call]/5 postfix-expression располагается перед каждым выражением в списке-выражений и любым аргументом по умолчанию. Инициализация параметра, включая каждое вычисление связанного значения и побочный эффект, неопределенно упорядочена по отношению к любому другому параметру.

Акцент мой.

person Igor Tandetnik    schedule 01.06.2018