aboutsummaryrefslogtreecommitdiff
path: root/libcxx/include/__atomic
diff options
context:
space:
mode:
Diffstat (limited to 'libcxx/include/__atomic')
-rw-r--r--libcxx/include/__atomic/atomic_waitable_traits.h9
1 files changed, 6 insertions, 3 deletions
diff --git a/libcxx/include/__atomic/atomic_waitable_traits.h b/libcxx/include/__atomic/atomic_waitable_traits.h
index 72ae4b7..369cd2c 100644
--- a/libcxx/include/__atomic/atomic_waitable_traits.h
+++ b/libcxx/include/__atomic/atomic_waitable_traits.h
@@ -67,8 +67,11 @@ concept __atomic_waitable = requires(const _Tp __t, memory_order __order) {
# if defined(_LIBCPP_ABI_ATOMIC_WAIT_NATIVE_BY_SIZE)
-_LIBCPP_HIDE_FROM_ABI constexpr bool __has_native_atomic_wait_impl(size_t __size) {
- switch (__size) {
+template <class _Tp>
+_LIBCPP_HIDE_FROM_ABI constexpr bool __has_native_atomic_wait_impl() {
+ if (alignof(_Tp) % sizeof(_Tp) != 0)
+ return false;
+ switch (sizeof(_Tp)) {
# define _LIBCPP_MAKE_CASE(n) \
case n: \
return true;
@@ -82,7 +85,7 @@ _LIBCPP_HIDE_FROM_ABI constexpr bool __has_native_atomic_wait_impl(size_t __size
template <class _Tp>
concept __has_native_atomic_wait =
has_unique_object_representations_v<_Tp> && is_trivially_copyable_v<_Tp> &&
- __has_native_atomic_wait_impl(sizeof(_Tp));
+ std::__has_native_atomic_wait_impl<_Tp>();
# else // _LIBCPP_ABI_ATOMIC_WAIT_NATIVE_BY_SIZE