Date: Mon, 19 Jun 2023 22:10:09 -0700
>
> > Is this a defect in the current spec? Thanks!
>
> Since C++17, std::atomic value-initializes its contained value, see:
>
> http://eel.is/c++draft/atomics#types.operations-2
>
> Therefore it cannot be trivially-constructible. std::atomic<bool> is not
> special in this regard.
>
Good catch. Verified via godbolt that
`std::is_trivially_constructible_v<std::atomic<bool>>` is true in C++17 and
false in C++20. So that defect only applies to C++17 and before.
Looks like the trivially-destructible part still applies in C++20.
> > Is this a defect in the current spec? Thanks!
>
> Since C++17, std::atomic value-initializes its contained value, see:
>
> http://eel.is/c++draft/atomics#types.operations-2
>
> Therefore it cannot be trivially-constructible. std::atomic<bool> is not
> special in this regard.
>
Good catch. Verified via godbolt that
`std::is_trivially_constructible_v<std::atomic<bool>>` is true in C++17 and
false in C++20. So that defect only applies to C++17 and before.
Looks like the trivially-destructible part still applies in C++20.
Received on 2023-06-20 05:10:24