Язык программирования С++ 4-е издание, стр. 225: Компилятор может изменить порядок кода для повышения производительности, если результат идентичен это простой порядок исполнения. Некоторые компиляторы, например. Visual С++ в режиме деблокирования изменит этот код:
#include <time.h>
...
auto t0 = clock();
auto r = veryLongComputation();
auto t1 = clock();
std::cout << r << " time: " << t1-t0 << endl;
в эту форму:
auto t0 = clock();
auto t1 = clock();
auto r = veryLongComputation();
std::cout << r << " time: " << t1-t0 << endl;
который гарантирует отличный результат, чем исходный код (ноль и большее, чем нулевое время). Подробнее см. мой другой вопрос. Является ли это поведение совместимым со стандартом С++?