From 231da5844d7a5a7414e47501ab0f7245b43345c1 Mon Sep 17 00:00:00 2001 From: Michael Schellenberger Costa Date: Tue, 21 Jan 2025 13:41:04 +0100 Subject: [PATCH] try and fix fold --- .../include/cuda/std/__type_traits/fold.h | 82 +------------------ 1 file changed, 1 insertion(+), 81 deletions(-) diff --git a/libcudacxx/include/cuda/std/__type_traits/fold.h b/libcudacxx/include/cuda/std/__type_traits/fold.h index 288fdac1ddb..68202baefc3 100644 --- a/libcudacxx/include/cuda/std/__type_traits/fold.h +++ b/libcudacxx/include/cuda/std/__type_traits/fold.h @@ -70,87 +70,7 @@ _CCCL_INLINE_VAR constexpr bool __fold_or_v = __fold_or<_Preds...>::value; # define _CCCL_FOLD_OR(__pred) (__pred || ...) # define _CCCL_FOLD_PLUS(__init, __args) (__args + ... + __init) # define _CCCL_FOLD_TIMES(__init, __args) (__args * ... * __init) - -#else // ^^^ _CCCL_STD_VER >= 2017 ^^^ / vvv _CCCL_STD_VER <= 2014 vvv - -template -_LIBCUDACXX_HIDE_FROM_ABI constexpr _Tp __variadic_sum(_Tp __init) noexcept -{ - return __init; -} - -template -_LIBCUDACXX_HIDE_FROM_ABI constexpr _Tp __variadic_sum(_Tp __init, _Args... __args) -{ - const _Tp __arr[sizeof...(_Args)] = {static_cast<_Tp>(__args)...}; - for (size_t __i = 0; __i < sizeof...(_Args); ++__i) - { - __init += __arr[__i]; - } - return __init; -} - -template -_LIBCUDACXX_HIDE_FROM_ABI constexpr _Tp __variadic_times(_Tp __init) noexcept -{ - return __init; -} - -template -_LIBCUDACXX_HIDE_FROM_ABI constexpr _Tp __variadic_times(_Tp __init, _Args... __args) -{ - const _Tp __arr[sizeof...(_Args)] = {static_cast<_Tp>(__args)...}; - for (size_t __i = 0; __i < sizeof...(_Args); ++__i) - { - __init *= __arr[__i]; - } - return __init; -} - -_LIBCUDACXX_HIDE_FROM_ABI constexpr bool __variadic_and() noexcept -{ - return true; -} - -template -_LIBCUDACXX_HIDE_FROM_ABI constexpr bool __variadic_and(_Args... __args) -{ - const bool __arr[sizeof...(_Args)] = {static_cast(__args)...}; - for (size_t __i = 0; __i < sizeof...(_Args); ++__i) - { - if (!__arr[__i]) - { - return false; - } - } - return true; -} - -_LIBCUDACXX_HIDE_FROM_ABI constexpr bool __variadic_or() noexcept -{ - return false; -} - -template -_LIBCUDACXX_HIDE_FROM_ABI constexpr bool __variadic_or(_Args... __args) -{ - const bool __arr[sizeof...(_Args)] = {static_cast(__args)...}; - for (size_t __i = 0; __i < sizeof...(_Args); ++__i) - { - if (__arr[__i]) - { - return true; - } - } - return false; -} - -# define _CCCL_FOLD_AND(__pred) _CUDA_VSTD::__variadic_and(__pred...) -# define _CCCL_FOLD_OR(__pred) _CUDA_VSTD::__variadic_or(__pred...) -# define _CCCL_FOLD_PLUS(__init, __args) _CUDA_VSTD::__variadic_sum(__init, __args...) -# define _CCCL_FOLD_TIMES(__init, __args) _CUDA_VSTD::__variadic_times(__init, __args...) - -#endif // _CCCL_STD_VER <= 2014 +#endif // _CCCL_STD_VER >= 2017 _LIBCUDACXX_END_NAMESPACE_STD