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