Ну, если вы просто хотите измерить время инициализации ваших объектов, зачем пытаться принудить компилятор избегать DCE и все такое, а не просто записать его таким образом, чтобы избежать проблемы в первую очередь?
object *arr = new object[100]; // allocate that outside the function and pass it into it
for (int i = 0; i < 100; i++) {
arr[i] = new object;
}
Если функция достаточно велика, чтобы избежать встраивания, это должно сработать, иначе вы можете экспортировать функцию и вызывать ее из другого модуля компиляции, чтобы избежать нежелательных оптимизаций.Все просто, никаких хитростей с некоторыми флагами компилятора, которые могут иметь непредвиденные последствия, и единственные издержки - это хранение массива - если ТО измеримо влияет на ваше время, вы все равно измеряете неправильные вещи.
Или если вам действительно нужен какой-то компиляторспециальные флаги - у gcc есть атрибут noinline ..