Это потому, что конструктор вашего типа node
по умолчанию не помечен noexcept
. Конструктор std::atomic<T>
по умолчанию помечен как noexcept, поэтому конструктор T
по умолчанию также должен быть.
Следует читать:
node() noexcept : data(10), hasTransaction(true) {}
Однако вы, вероятно, должны знать, что если ваш тип не является тривиальным, этот «атомарный» тип, вероятно, станет поточно-ориентированным через мьютекс. Таким образом, использование атомной техники в этом случае только усложняет вашу жизнь без выгоды.
Как правило, вы не захотите использовать атомики, если это не для некоторого примитивного типа (обычно необработанный указатель или целочисленный тип).