31 static constexpr uint32_t
value = T::dim();
34 template<std::
integral T>
37 static constexpr uint32_t
value = 1u;
46 using type =
typename T::value_type;
50 requires(std::is_fundamental_v<T>)
58 requires requires() {
typename T::element_type; }
59 struct GetValueType<T>
78 template<
typename T,
typename =
void>
80 : std::bool_constant<std::is_empty_v<T> || std::is_trivially_copyable_v<T>>
96 template<
typename T,
typename =
void>
100 std::is_trivially_copyable_v<T> || __nv_is_extended_device_lambda_closure_type(T)
101 || __nv_is_extended_host_device_lambda_closure_type(T)>
103 : std::is_trivially_copyable<T>
116 [[nodiscard]]
consteval uint32_t
getDim([[maybe_unused]] T
const& any)
121 template<
typename T_From,
typename T_To>
124 template<
typename T_From,
typename T_To>
Concept to check for a kernel argument object.
Concept to check for a kernel function object.
Concept to check if a type can be lossless converted to another type.
typename GetValueType< T >::type GetValueType_t
constexpr uint32_t getDim_v
constexpr uint32_t notRequiredDim
constexpr bool isLosslesslyConvertible_v
constexpr uint32_t notRequiredWidth
consteval uint32_t getDim(T const &any)
constexpr bool isKernelTriviallyCopyable_v
constexpr bool isConvertible_v
constexpr bool isKernelArgumentTriviallyCopyable_v
This type is used in cases where a template type parameter is not required and can optionally be pass...
static constexpr uint32_t value
static constexpr uint32_t value
typename T::value_type type
Check if a type used as kernel argument is trivially copyable.
Check if the kernel type is trivially copyable.