Параметры функции: последовательно или нет последовательности? - PullRequest
0 голосов
/ 01 июня 2018

Вкл. cppreference Я вижу следующий текст:

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

Однако, я не смог найти подтверждения этому в стандарте C ++ 17.

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

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

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

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

1 Ответ

0 голосов
/ 01 июня 2018

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

Выделение шахты.

...