diff options
author | Damien Lebrun-Grandie <dalg24@gmail.com> | 2024-05-22 17:43:45 -0400 |
---|---|---|
committer | Jonathan Wakely <redi@gcc.gnu.org> | 2024-07-12 00:08:15 +0100 |
commit | 79d3f17b07884cc9486f5e6fb21beea97c153a55 (patch) | |
tree | 4891f50281e2979bdc77db750895e70865e026d9 | |
parent | b96789abf8a51e8f70309799b5dfee36d4fb3da6 (diff) | |
download | gcc-79d3f17b07884cc9486f5e6fb21beea97c153a55.zip gcc-79d3f17b07884cc9486f5e6fb21beea97c153a55.tar.gz gcc-79d3f17b07884cc9486f5e6fb21beea97c153a55.tar.bz2 |
libstdc++: the specialization atomic_ref<bool> 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<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>
-rw-r--r-- | libstdc++-v3/include/bits/atomic_base.h | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/libstdc++-v3/include/bits/atomic_base.h b/libstdc++-v3/include/bits/atomic_base.h index 20901b7..1c2367b 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<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 |