From: Damien Lebrun-Grandie Date: Wed, 22 May 2024 21:43:45 +0000 (-0400) Subject: libstdc++: the specialization atomic_ref should use the primary template X-Git-Tag: basepoints/gcc-16~7573 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=79d3f17b07884cc9486f5e6fb21beea97c153a55;p=thirdparty%2Fgcc.git libstdc++: the specialization atomic_ref should use the primary template 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` "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 --- diff --git a/libstdc++-v3/include/bits/atomic_base.h b/libstdc++-v3/include/bits/atomic_base.h index 20901b7fc06..1c2367b39b6 100644 --- a/libstdc++-v3/include/bits/atomic_base.h +++ b/libstdc++-v3/include/bits/atomic_base.h @@ -1478,7 +1478,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION #undef _GLIBCXX20_INIT template, 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