в стандарте решили это не описывать
только компилятор работает по стандарту и не увидев в нужном месте mutex.lock или atomic может посчитать, что тут однопоточный код и из этого сделать какие то выводы, которые приведут к неработающей программе. И на платформу ему будет пофиг