Обеспечение порядка операторов в 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;

Ответы на вопрос(6)

Ваш ответ на вопрос