Гарантирован ли порядок вычисления аргументов в вызове функции?

1,00
р.
К примеру, у меня есть такой вызов функции:
std::unique_ptr tmp{new MyClassWithNameFunction} foo(tmp->name(), std::move(tmp))
Гарантировано ли, что вызов метода name() будет происходить первым?

Ответ
Порядок вычисления аргументов в вызове функции — это пример неуточняемого поведения (англ. unspecified behavior). Такое поведение зависит от реализации (компилятора), но реализация свой выбор поведения документировать не должна.
Кстати говоря, порядок вычисления аргументов необязательно должен быть справа-налево или слева-направо. Более того, при вызове разных функций он может быть разным.