Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Remove _CCCL_INLINE_VAR #4192

Merged
merged 7 commits into from
Mar 20, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion c2h/include/c2h/bfloat16.cuh
Original file line number Diff line number Diff line change
Expand Up @@ -236,7 +236,7 @@ inline std::ostream& operator<<(std::ostream& out, const __nv_bfloat16& x)
namespace cuda
{
template <>
_CCCL_INLINE_VAR constexpr bool is_floating_point_v<bfloat16_t> = true;
inline constexpr bool is_floating_point_v<bfloat16_t> = true;
}

template <>
Expand Down
2 changes: 1 addition & 1 deletion c2h/include/c2h/half.cuh
Original file line number Diff line number Diff line change
Expand Up @@ -331,7 +331,7 @@ inline std::ostream& operator<<(std::ostream& out, const __half& x)
namespace cuda
{
template <>
_CCCL_INLINE_VAR constexpr bool is_floating_point_v<half_t> = true;
inline constexpr bool is_floating_point_v<half_t> = true;
}

template <>
Expand Down
4 changes: 2 additions & 2 deletions cub/cub/device/dispatch/dispatch_merge.cuh
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,8 @@
CUB_NAMESPACE_BEGIN
namespace detail::merge
{
_CCCL_INLINE_VAR constexpr int fallback_BLOCK_THREADS = 64;
_CCCL_INLINE_VAR constexpr int fallback_ITEMS_PER_THREAD = 1;
inline constexpr int fallback_BLOCK_THREADS = 64;
inline constexpr int fallback_ITEMS_PER_THREAD = 1;

template <typename DefaultPolicy, class... Args>
class choose_merge_agent
Expand Down
2 changes: 1 addition & 1 deletion cub/cub/device/dispatch/kernels/transform.cuh
Original file line number Diff line number Diff line change
Expand Up @@ -402,7 +402,7 @@ _CCCL_HOST_DEVICE auto make_aligned_base_ptr_kernel_arg(It ptr, int alignment) -
}

template <Algorithm Alg>
_CCCL_INLINE_VAR constexpr bool needs_aligned_ptr_v =
inline constexpr bool needs_aligned_ptr_v =
false
#ifdef _CUB_HAS_TRANSFORM_UBLKCP
|| Alg == Algorithm::ublkcp
Expand Down
4 changes: 2 additions & 2 deletions cub/cub/util_type.cuh
Original file line number Diff line number Diff line change
Expand Up @@ -473,7 +473,7 @@ struct CubVector
};

/// The maximum number of elements in CUDA vector types
_CCCL_INLINE_VAR constexpr int MAX_VEC_ELEMENTS = 4;
inline constexpr int MAX_VEC_ELEMENTS = 4;

/**
* Generic vector-1 type
Expand Down Expand Up @@ -1103,7 +1103,7 @@ struct is_primitive : is_primitive_impl::is_primitive<T>
{};

template <typename T>
_CCCL_INLINE_VAR constexpr bool is_primitive_v = is_primitive<T>::value;
inline constexpr bool is_primitive_v = is_primitive<T>::value;
} // namespace detail

#endif // _CCCL_DOXYGEN_INVOKED
Expand Down
2 changes: 1 addition & 1 deletion cub/test/catch2_test_launch_helper.h
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,7 @@

#define DECLARE_LAUNCH_WRAPPER(API, WRAPPED_API_NAME) \
DECLARE_INVOCABLE(API, WRAPPED_API_NAME, , ); \
_CCCL_INLINE_VAR constexpr struct WRAPPED_API_NAME##_t \
inline constexpr struct WRAPPED_API_NAME##_t \
{ \
template <class... As> \
void operator()(As... args) const \
Expand Down
4 changes: 2 additions & 2 deletions cudax/include/cuda/experimental/__execution/policy.cuh
Original file line number Diff line number Diff line change
Expand Up @@ -53,12 +53,12 @@ _CCCL_GLOBAL_CONSTANT execution_policy unseq_host = execution_policy::unse
_CCCL_GLOBAL_CONSTANT execution_policy unseq_device = execution_policy::unsequenced_device;

template <execution_policy _Policy>
_CCCL_INLINE_VAR constexpr bool __is_parallel_execution_policy =
inline constexpr bool __is_parallel_execution_policy =
_Policy == execution_policy::parallel_host || _Policy == execution_policy::parallel_device
|| _Policy == execution_policy::parallel_unsequenced_host || _Policy == execution_policy::parallel_unsequenced_device;

template <execution_policy _Policy>
_CCCL_INLINE_VAR constexpr bool __is_unsequenced_execution_policy =
inline constexpr bool __is_unsequenced_execution_policy =
_Policy == execution_policy::unsequenced_host || _Policy == execution_policy::unsequenced_device
|| _Policy == execution_policy::parallel_unsequenced_host || _Policy == execution_policy::parallel_unsequenced_device;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -120,11 +120,10 @@ struct get_level_helper
} // namespace detail

template <typename QueryLevel, typename Hierarchy>
_CCCL_INLINE_VAR constexpr bool has_level =
detail::has_level_helper<QueryLevel, ::cuda::std::remove_cvref_t<Hierarchy>>::value;
inline constexpr bool has_level = detail::has_level_helper<QueryLevel, ::cuda::std::remove_cvref_t<Hierarchy>>::value;

template <typename QueryLevel, typename Hierarchy>
_CCCL_INLINE_VAR constexpr bool has_level_or_unit =
inline constexpr bool has_level_or_unit =
detail::has_level_helper<QueryLevel, ::cuda::std::remove_cvref_t<Hierarchy>>::value
|| detail::has_unit<QueryLevel, ::cuda::std::remove_cvref_t<Hierarchy>>::value;

Expand All @@ -138,7 +137,7 @@ struct can_stack_checker
};

template <typename LUnit, typename L1, typename... Levels>
_CCCL_INLINE_VAR constexpr bool __can_stack =
inline constexpr bool __can_stack =
can_stack_checker<__level_type_of<L1>,
__level_type_of<Levels>...>::template can_stack<__level_type_of<Levels>..., LUnit>::value;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -85,22 +85,22 @@ template <typename LevelType>
using __default_unit_below = typename LevelType::allowed_below::default_unit;

template <typename QueryLevel, typename AllowedLevels>
_CCCL_INLINE_VAR constexpr bool is_level_allowed = false;
inline constexpr bool is_level_allowed = false;

template <typename QueryLevel, typename... Levels>
_CCCL_INLINE_VAR constexpr bool is_level_allowed<QueryLevel, allowed_levels<Levels...>> =
inline constexpr bool is_level_allowed<QueryLevel, allowed_levels<Levels...>> =
::cuda::std::disjunction_v<::cuda::std::is_same<QueryLevel, Levels>...>;

template <typename L1, typename L2>
_CCCL_INLINE_VAR constexpr bool can_rhs_stack_on_lhs =
inline constexpr bool can_rhs_stack_on_lhs =
is_level_allowed<L1, typename L2::allowed_below> || is_level_allowed<L2, typename L1::allowed_above>;

template <typename Unit, typename Level>
_CCCL_INLINE_VAR constexpr bool legal_unit_for_level =
inline constexpr bool legal_unit_for_level =
can_rhs_stack_on_lhs<Unit, Level> || legal_unit_for_level<Unit, __default_unit_below<Level>>;

template <typename Unit>
_CCCL_INLINE_VAR constexpr bool legal_unit_for_level<Unit, void> = false;
inline constexpr bool legal_unit_for_level<Unit, void> = false;
} // namespace detail

// Base type for all hierarchy levels
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,13 +40,13 @@ namespace cuda::experimental
//! __valid_any_cast
//!
template <class _Interface, class _Tp>
_CCCL_INLINE_VAR constexpr bool __valid_any_cast = true;
inline constexpr bool __valid_any_cast = true;

template <class _Interface, class _Tp>
_CCCL_INLINE_VAR constexpr bool __valid_any_cast<_Interface*, _Tp> = false;
inline constexpr bool __valid_any_cast<_Interface*, _Tp> = false;

template <class _Interface, class _Tp>
_CCCL_INLINE_VAR constexpr bool __valid_any_cast<_Interface*, _Tp*> =
inline constexpr bool __valid_any_cast<_Interface*, _Tp*> =
!_CUDA_VSTD::is_const_v<_Interface> || _CUDA_VSTD::is_const_v<_Tp>;

//!
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -52,19 +52,19 @@ template <class _Interface>
extern _Interface __remove_ireference_v<__ireference<_Interface const>>;

template <class _Interface>
_CCCL_INLINE_VAR constexpr bool __is_value_v = _CUDA_VSTD::is_class_v<_Interface>;
inline constexpr bool __is_value_v = _CUDA_VSTD::is_class_v<_Interface>;

template <class _Interface>
_CCCL_INLINE_VAR constexpr bool __is_value_v<__ireference<_Interface>> = false;
inline constexpr bool __is_value_v<__ireference<_Interface>> = false;

template <class _Interface>
_CCCL_INLINE_VAR constexpr bool __is_lvalue_reference_v = false;
inline constexpr bool __is_lvalue_reference_v = false;

template <class _Interface>
_CCCL_INLINE_VAR constexpr bool __is_lvalue_reference_v<__ireference<_Interface const>> = true;
inline constexpr bool __is_lvalue_reference_v<__ireference<_Interface const>> = true;

template <class _Interface>
_CCCL_INLINE_VAR constexpr bool __is_lvalue_reference_v<_Interface&> = true;
inline constexpr bool __is_lvalue_reference_v<_Interface&> = true;

//!
//! __bases_of: get the list of base interface for an interface, including itself
Expand All @@ -82,16 +82,16 @@ using __bases_of _CCCL_NODEBUG_ALIAS = //
//! interface subsumption
//!
template <class _Interface1, class _Interface2>
_CCCL_INLINE_VAR constexpr bool __subsumes = false;
inline constexpr bool __subsumes = false;

template <class _Interface>
_CCCL_INLINE_VAR constexpr bool __subsumes<_Interface, _Interface> = true;
inline constexpr bool __subsumes<_Interface, _Interface> = true;

template <class... _Set>
_CCCL_INLINE_VAR constexpr bool __subsumes<__iset<_Set...>, __iset<_Set...>> = true;
inline constexpr bool __subsumes<__iset<_Set...>, __iset<_Set...>> = true;

template <class... _Subset, class... _Superset>
_CCCL_INLINE_VAR constexpr bool __subsumes<__iset<_Subset...>, __iset<_Superset...>> =
inline constexpr bool __subsumes<__iset<_Subset...>, __iset<_Superset...>> =
_CUDA_VSTD::__type_set_contains_v<_CUDA_VSTD::__make_type_set<_Superset...>, _Subset...>;

//!
Expand Down Expand Up @@ -121,10 +121,10 @@ struct __has_base_fn<__iset<_Bases...>>
};

template <class _Derived, class _Base, class = void>
_CCCL_INLINE_VAR constexpr bool __extension_of = false;
inline constexpr bool __extension_of = false;

template <class _Derived, class _Base>
_CCCL_INLINE_VAR constexpr bool
inline constexpr bool
__extension_of<_Derived,
_Base,
_CUDA_VSTD::enable_if_t<_CUDA_VSTD::is_class_v<_Derived> && _CUDA_VSTD::is_class_v<_Base>>> =
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -99,10 +99,10 @@ using __virtual_fn_for _CCCL_NODEBUG_ALIAS = decltype(__virtual_fn_for_v<_Mbr, _
// If the interface is __ireference<MyInterface const>, then calls to non-const
// member functions are not allowed.
template <auto, class... _Interface>
_CCCL_INLINE_VAR constexpr bool __valid_virtcall = sizeof...(_Interface) == 1;
inline constexpr bool __valid_virtcall = sizeof...(_Interface) == 1;

template <auto _Mbr, class _Interface>
_CCCL_INLINE_VAR constexpr bool __valid_virtcall<_Mbr, __ireference<_Interface const>> = __virtual_fn<_Mbr>::__const_fn;
inline constexpr bool __valid_virtcall<_Mbr, __ireference<_Interface const>> = __virtual_fn<_Mbr>::__const_fn;

template <auto _Mbr, class _Interface, class _Super, class _Self, class... _Args>
_CUDAX_HOST_API auto __virtcall(_Self* __self, _Args&&... __args) //
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -98,44 +98,44 @@ template <class _Fn, class _Tp = void, auto _Override = 0>
extern _CUDA_VSTD::__undefined<_Fn> __virtual_override_fn;

template <class _Tp, auto _Override, class _Ret, class _Cp, class... _Args>
_CCCL_INLINE_VAR constexpr __identity_t<_Ret (*)(void*, _Args...)> //
inline constexpr __identity_t<_Ret (*)(void*, _Args...)> //
__virtual_override_fn<_Ret (*)(_Cp&, _Args...), _Tp, _Override> = //
&__override_fn_<_Tp, _Override, _Ret, false, false, _Args...>;

template <class _Tp, auto _Override, class _Ret, class _Cp, class... _Args>
_CCCL_INLINE_VAR constexpr __identity_t<_Ret (*)(void const*, _Args...)>
inline constexpr __identity_t<_Ret (*)(void const*, _Args...)>
__virtual_override_fn<_Ret (*)(_Cp const&, _Args...), _Tp, _Override> =
&__override_fn_<_Tp, _Override, _Ret, true, false, _Args...>;

template <class _Tp, auto _Override, class _Ret, class _Cp, class... _Args>
_CCCL_INLINE_VAR constexpr __identity_t<_Ret (*)(void*, _Args...) noexcept>
inline constexpr __identity_t<_Ret (*)(void*, _Args...) noexcept>
__virtual_override_fn<_Ret (*)(_Cp&, _Args...) noexcept, _Tp, _Override> =
&__override_fn_<_Tp, _Override, _Ret, false, true, _Args...>;

template <class _Tp, auto _Override, class _Ret, class _Cp, class... _Args>
_CCCL_INLINE_VAR constexpr __identity_t<_Ret (*)(void const*, _Args...) noexcept>
inline constexpr __identity_t<_Ret (*)(void const*, _Args...) noexcept>
__virtual_override_fn<_Ret (*)(_Cp const&, _Args...) noexcept, _Tp, _Override> =
&__override_fn_<_Tp, _Override, _Ret, true, true, _Args...>;

// TODO: Add support for member functions with reference qualifiers.

template <class _Tp, auto _Override, class _Ret, class _Cp, class... _Args>
_CCCL_INLINE_VAR constexpr __identity_t<_Ret (*)(void*, _Args...)> //
inline constexpr __identity_t<_Ret (*)(void*, _Args...)> //
__virtual_override_fn<_Ret (_Cp::*)(_Args...), _Tp, _Override> = //
&__override_fn_<_Tp, _Override, _Ret, false, false, _Args...>;

template <class _Tp, auto _Override, class _Ret, class _Cp, class... _Args>
_CCCL_INLINE_VAR constexpr __identity_t<_Ret (*)(void const*, _Args...)> //
inline constexpr __identity_t<_Ret (*)(void const*, _Args...)> //
__virtual_override_fn<_Ret (_Cp::*)(_Args...) const, _Tp, _Override> =
&__override_fn_<_Tp, _Override, _Ret, true, false, _Args...>;

template <class _Tp, auto _Override, class _Ret, class _Cp, class... _Args>
_CCCL_INLINE_VAR constexpr __identity_t<_Ret (*)(void*, _Args...) noexcept>
inline constexpr __identity_t<_Ret (*)(void*, _Args...) noexcept>
__virtual_override_fn<_Ret (_Cp::*)(_Args...) noexcept, _Tp, _Override> =
&__override_fn_<_Tp, _Override, _Ret, false, true, _Args...>;

template <class _Tp, auto _Override, class _Ret, class _Cp, class... _Args>
_CCCL_INLINE_VAR constexpr __identity_t<_Ret (*)(void const*, _Args...) noexcept>
inline constexpr __identity_t<_Ret (*)(void const*, _Args...) noexcept>
__virtual_override_fn<_Ret (_Cp::*)(_Args...) const noexcept, _Tp, _Override> =
&__override_fn_<_Tp, _Override, _Ret, true, true, _Args...>;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ enum class _ExecutionSpace
};

template <class... _Properties>
_CCCL_INLINE_VAR constexpr _ExecutionSpace __select_execution_space =
inline constexpr _ExecutionSpace __select_execution_space =
_CUDA_VMR::__is_host_device_accessible<_Properties...> ? _ExecutionSpace::__host_device
: _CUDA_VMR::__is_device_accessible<_Properties...>
? _ExecutionSpace::__device
Expand Down
2 changes: 0 additions & 2 deletions docs/cccl/development/macro.rst
Original file line number Diff line number Diff line change
Expand Up @@ -217,8 +217,6 @@ The following macros are required only if the target C++ version does not suppor
+-----------------------------+----------------------------------------------------------+
| ``_CCCL_CONSTEXPR_CXX23`` | Enable ``constexpr`` for C++23 or newer |
+-----------------------------+----------------------------------------------------------+
| ``_CCCL_INLINE_VAR`` | Portable ``inline constexpr`` variable (before C++17) |
+-----------------------------+----------------------------------------------------------+

**Concept-like Macros**:

Expand Down
1 change: 0 additions & 1 deletion docs/repo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -417,7 +417,6 @@ doxygen_predefined = [
"_CCCL_HIDE_FROM_ABI=",
"_CCCL_HOST=",
"_CCCL_HOST_DEVICE=",
"_CCCL_INLINE_VAR=inline",
"_CCCL_NODISCARD=[[nodiscard]]",
"_CCCL_NODISCARD_FRIEND=",
"_CCCL_STD_VER=2020",
Expand Down
2 changes: 1 addition & 1 deletion libcudacxx/include/cuda/__functional/address_stability.h
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ struct proclaims_copyable_arguments : _CUDA_VSTD::false_type

#if !defined(_CCCL_NO_VARIABLE_TEMPLATES)
template <typename F, typename... Args>
_CCCL_INLINE_VAR constexpr bool proclaims_copyable_arguments_v = proclaims_copyable_arguments<F, Args...>::value;
inline constexpr bool proclaims_copyable_arguments_v = proclaims_copyable_arguments<F, Args...>::value;
#endif // !_CCCL_NO_VARIABLE_TEMPLATES

// Wrapper for a callable to mark it as permitting copied arguments
Expand Down
12 changes: 6 additions & 6 deletions libcudacxx/include/cuda/__memory_resource/properties.h
Original file line number Diff line number Diff line change
Expand Up @@ -29,10 +29,10 @@
_LIBCUDACXX_BEGIN_NAMESPACE_CUDA_MR

//! @brief The default alignment by a cudaMalloc{...} call
_CCCL_INLINE_VAR constexpr size_t default_cuda_malloc_alignment = 256;
inline constexpr size_t default_cuda_malloc_alignment = 256;

//! @brief The default alignment by a cudaMallocHost{...} call
_CCCL_INLINE_VAR constexpr size_t default_cuda_malloc_host_alignment = alignof(_CUDA_VSTD::max_align_t);
inline constexpr size_t default_cuda_malloc_host_alignment = alignof(_CUDA_VSTD::max_align_t);

//! @brief The device_accessible property signals that the allocated memory is device accessible
struct device_accessible
Expand All @@ -44,22 +44,22 @@ struct host_accessible

//! @brief determines whether a set of properties signals host accessible memory.
template <class... _Properties>
_CCCL_INLINE_VAR constexpr bool __is_host_accessible =
inline constexpr bool __is_host_accessible =
_CUDA_VSTD::__type_set_contains_v<_CUDA_VSTD::__make_type_set<_Properties...>, host_accessible>;

//! @brief determines whether a set of properties signals device accessible memory.
template <class... _Properties>
_CCCL_INLINE_VAR constexpr bool __is_device_accessible =
inline constexpr bool __is_device_accessible =
_CUDA_VSTD::__type_set_contains_v<_CUDA_VSTD::__make_type_set<_Properties...>, device_accessible>;

//! @brief determines whether a set of properties signals host device accessible memory.
template <class... _Properties>
_CCCL_INLINE_VAR constexpr bool __is_host_device_accessible =
inline constexpr bool __is_host_device_accessible =
_CUDA_VSTD::__type_set_contains_v<_CUDA_VSTD::__make_type_set<_Properties...>, host_accessible, device_accessible>;

//! @brief verifies that a set of properties contains at least one execution space property
template <class... _Properties>
_CCCL_INLINE_VAR constexpr bool __contains_execution_space_property =
inline constexpr bool __contains_execution_space_property =
__is_host_accessible<_Properties...> || __is_device_accessible<_Properties...>;

_LIBCUDACXX_END_NAMESPACE_CUDA_MR
Expand Down
2 changes: 1 addition & 1 deletion libcudacxx/include/cuda/__memory_resource/resource_ref.h
Original file line number Diff line number Diff line change
Expand Up @@ -459,7 +459,7 @@ template <_AllocType _Alloc_type>
using _Vtable_store = _CUDA_VSTD::_If<_Alloc_type == _AllocType::_Default, _Alloc_vtable, _Async_alloc_vtable>;

template <_AllocType _Alloc_type, _WrapperType _Wrapper_type, class _Resource>
_CCCL_INLINE_VAR constexpr _Vtable_store<_Alloc_type> __alloc_vtable =
inline constexpr _Vtable_store<_Alloc_type> __alloc_vtable =
_Resource_vtable_builder::template _Create<_Resource, _Alloc_type, _Wrapper_type>();

struct _Resource_ref_helper
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ _LIBCUDACXX_BEGIN_NAMESPACE_CUDA

//! Tells whether a type is a floating point type. Users are allowed to specialize this template for their own types.
template <class _Tp>
_CCCL_INLINE_VAR constexpr bool is_floating_point_v =
inline constexpr bool is_floating_point_v =
_CUDA_VSTD::is_floating_point_v<_CUDA_VSTD::remove_cv_t<_Tp>>
|| _CUDA_VSTD::__is_extended_floating_point_v<_CUDA_VSTD::remove_cv_t<_Tp>>;

Expand Down
12 changes: 6 additions & 6 deletions libcudacxx/include/cuda/std/__atomic/order.h
Original file line number Diff line number Diff line change
Expand Up @@ -143,12 +143,12 @@ _LIBCUDACXX_BEGIN_NAMESPACE_CUDA

using memory_order = _CUDA_VSTD::memory_order;

_CCCL_INLINE_VAR constexpr memory_order memory_order_relaxed = _CUDA_VSTD::memory_order_relaxed;
_CCCL_INLINE_VAR constexpr memory_order memory_order_consume = _CUDA_VSTD::memory_order_consume;
_CCCL_INLINE_VAR constexpr memory_order memory_order_acquire = _CUDA_VSTD::memory_order_acquire;
_CCCL_INLINE_VAR constexpr memory_order memory_order_release = _CUDA_VSTD::memory_order_release;
_CCCL_INLINE_VAR constexpr memory_order memory_order_acq_rel = _CUDA_VSTD::memory_order_acq_rel;
_CCCL_INLINE_VAR constexpr memory_order memory_order_seq_cst = _CUDA_VSTD::memory_order_seq_cst;
inline constexpr memory_order memory_order_relaxed = _CUDA_VSTD::memory_order_relaxed;
inline constexpr memory_order memory_order_consume = _CUDA_VSTD::memory_order_consume;
inline constexpr memory_order memory_order_acquire = _CUDA_VSTD::memory_order_acquire;
inline constexpr memory_order memory_order_release = _CUDA_VSTD::memory_order_release;
inline constexpr memory_order memory_order_acq_rel = _CUDA_VSTD::memory_order_acq_rel;
inline constexpr memory_order memory_order_seq_cst = _CUDA_VSTD::memory_order_seq_cst;

_LIBCUDACXX_END_NAMESPACE_CUDA

Expand Down
Loading
Loading