Per [atomics.ref.int] `bool` is excluded from the list of integral types
for which there is a specialization of the `atomic_ref` class template
and [Note 1] clearly states that `atomic_ref<bool>` "uses the primary
template" instead.
libstdc++-v3/ChangeLog:
* include/bits/atomic_base.h (__atomic_ref): Do not use integral
specialization for bool.
Signed-off-by: Damien Lebrun-Grandie <dalg24@gmail.com>
#undef _GLIBCXX20_INIT
template<typename _Tp,
- bool = is_integral_v<_Tp>, bool = is_floating_point_v<_Tp>>
+ bool = is_integral_v<_Tp> && !is_same_v<_Tp, bool>,
+ bool = is_floating_point_v<_Tp>>
struct __atomic_ref;
// base class for non-integral, non-floating-point, non-pointer types