Есть ли способ установить определенный порядок оценки аргументов функции? [дубликат] ⇐ C++
-
Гость
Есть ли способ установить определенный порядок оценки аргументов функции? [дубликат]
Я понимаю, что когда я вызываю такую функцию, как
a(b(),c()); тогда поведение this может быть неопределенным в = C++17, в том смысле, что компилятор должен определить, следует ли оценивать b или c первым.
Я хотел бы знать, как лучше всего добиться порядка оценки. Я буду компилировать как C++14.
Сразу на ум приходит примерно следующее:
#include число интервалов = 5; автоматическое приращение(){ количество возврата++; } шаблон auto diff(A && a, B && b){ вернуть а-б; } интервал основной() { авто && a = приращение(); авто && b = приращение(); авто с = разница (а, б); } Нахожусь ли я в стране неопределенного поведения? Или именно так «должно» устанавливать порядок вычислений?
Я понимаю, что когда я вызываю такую функцию, как
a(b(),c()); тогда поведение this может быть неопределенным в = C++17, в том смысле, что компилятор должен определить, следует ли оценивать b или c первым.
Я хотел бы знать, как лучше всего добиться порядка оценки. Я буду компилировать как C++14.
Сразу на ум приходит примерно следующее:
#include число интервалов = 5; автоматическое приращение(){ количество возврата++; } шаблон auto diff(A && a, B && b){ вернуть а-б; } интервал основной() { авто && a = приращение(); авто && b = приращение(); авто с = разница (а, б); } Нахожусь ли я в стране неопределенного поведения? Или именно так «должно» устанавливать порядок вычислений?
Мобильная версия