http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53901
Jonathan Wakely <redi at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Summary|[C++11] std::atomic<T> |[C++11] std::atomic<T> |fails for type without |fails for type without |trivial default constructor |no-throw default |and trivial destructor |constructor --- Comment #2 from Jonathan Wakely <redi at gcc dot gnu.org> 2012-07-09 17:31:25 UTC --- In my testccase T isn't trivially copyable because of its non-trivial destructor, so only the constructor is relevant. The fact G++ accepts it if the constructor is defaulted after its first declaration is now PR 53903 N.B. it fails even if the default constructor isn't used: #include <atomic> struct T { T() noexcept(false) { } }; std::atomic<T> a{ T{} }; This appears to be a defect in the standard rather than a libstdc++ bug.