Если я пишу f(x)->g(args, ...)
, могу ли я полагаться на точку последовательности после f(x)
до оценки args, ...
? Я вижу аргументы в обоих направлениях:
- §1.9.17 "При вызове функции (независимо от того, является ли функция встроенной), после оценки всех аргументов функции (если они есть) есть точка последовательности, которая выполняется перед выполнением любых выражений или операторов в body > После копирования возвращаемого значения и перед выполнением любых выражений вне функции есть также точка последовательности."
- С другой стороны, указатель объекта неявно является скрытым аргументом
this
, как будто я написалg(f(x), args, ...)
, который предлагает его как аргумент и, следовательно, не указан.
Оператор ->
не является нормальным двоичным оператором, так как ясно, что g(...)
не может быть оценен до f(x)
, как если бы я написал f(x) + g(...)
. Я удивлен, что не могу найти какое-то конкретное утверждение об этом.