В C ++ 20 исключены некоторые операции с типами volatile
(после P1152).
Следующий код, действовавший до C ++ 20:
void busyLoop(std::size_t count) {
for (volatile size_t counter = 0; counter < count; ++counter);
}
теперь генерирует предупреждение об устаревании:
warning: '++' expression of 'volatile'-qualified type is deprecated [-Wvolatile]
Изменение ++
на +=
или на counter = counter + 1
не помогает, поскольку проблема, похоже, связана с вычислением нового значения на основе изменчивого типа.
Как можно привести приведенный выше код в соответствие с новыми правилами C ++ 20?
volatile
действительно нужен для начала? В свое время я видел (и сделал) множество циклов «занято-ожидание», но никогда не видел (или не нуждался в использовании)volatile
. - person Some programmer dude   schedule 01.01.2021