Обеспечение порядка операторов в C ++
Предположим, у меня есть ряд операторов, которые я хочу выполнить в фиксированном порядке. Я хочу использовать g ++ с уровнем оптимизации 2, чтобы некоторые операторы могли быть переупорядочены. Какие инструменты необходимы для обеспечения определенного порядка утверждений?
Рассмотрим следующий пример.
using Clock = std::chrono::high_resolution_clock;
auto t1 = Clock::now(); // Statement 1
foo(); // Statement 2
auto t2 = Clock::now(); // Statement 3
auto elapsedTime = t2 - t1;
В этом примере важно, чтобы операторы 1-3 выполнялись в заданном порядке. Однако не может ли компилятор думать, что оператор 2 не зависит от 1 и 3, и выполнять код следующим образом?
using Clock=std::chrono::high_resolution_clock;
foo(); // Statement 2
auto t1 = Clock::now(); // Statement 1
auto t2 = Clock::now(); // Statement 3
auto elapsedTime = t2 - t1;