Стандарт завершен , и каждая операция по всем стандартным интегральным специализациям atomic<T>
является атомарной.
Это не означает, что все выражения со стандартным интегралом atomic<T>
являются атомарными.
number = number * 2;
- это две операции:
temporary = number * 2;
number = temporary;
Каждый из них атомный, но вместе они не являются. Для этого предназначены транзакции / критические разделы.