This page is a snapshot from the LWG issues list, see the Library Active Issues List for more information and the meaning of Resolved status.
Section: 33.5.8 [atomics.types.generic], 33.5.8.2 [atomics.types.operations] Status: Resolved Submitter: Jonathan Wakely Opened: 2012-07-19 Last modified: 2016-01-28
Priority: 4
View all other issues in [atomics.types.generic].
View all issues with Resolved status.
Discussion:
As raised in c++std-lib-32781, this fails to compile even though the default constructor is not used:
#include <atomic> struct X { X() noexcept(false) {} X(int) { } }; std::atomic<X> x(3);
This is because atomic<T>'s default constructor is declared to be non-throwing and is explicitly-defaulted on its first declaration:
atomic() noexcept = default;
This is ill-formed if the implicitly-declared default constructor would not be non-throwing.
Possible solutions:[2012, Portland: move to Core]
Recommend referring to core to see if the constructor noexcept mismatch can be resolved there. The issue is not specific to concurrency.
[2015-04-09 Daniel comments]
CWG issue 1778, which had been created in behalf of this LWG issue, has been resolved as a defect.
[2015-10, Kona]
Mark as resolved
Proposed resolution: