15#ifndef GPUCOMMONTYPETRAITS_H
16#define GPUCOMMONTYPETRAITS_H
20#if !defined(GPUCA_GPUCODE_DEVICE) || defined(__CUDACC__) || defined(__HIPCC__)
21#ifndef GPUCA_GPUCODE_COMPILEKERNELS
27template <
bool B,
class T,
class F>
31template <
class T,
class F>
32struct conditional<false,
T, F> {
35template <
bool B,
class T,
class F>
36using contitional_t =
typename conditional<B, T, F>::type;
38template <
class T,
class U>
40 static constexpr bool value =
false;
44 static constexpr bool value =
true;
46template <
class T,
class U>
47static constexpr bool is_same_v = is_same<T, U>::value;
49template <
bool B,
class T =
void>
53struct enable_if<true,
T> {
62struct remove_cv<const
T> {
66struct remove_cv<volatile
T> {
70struct remove_cv<const volatile
T> {
74using remove_cv_t =
typename remove_cv<T>::type;
81struct remove_const<const
T> {
85using remove_const_t =
typename remove_const<T>::type;
88struct remove_volatile {
92struct remove_volatile<volatile
T> {
96using remove_volatile_t =
typename remove_volatile<T>::type;
100 static constexpr bool value =
false;
103struct is_pointer_t<
T*> {
104 static constexpr bool value =
true;
107struct is_pointer : is_pointer_t<typename std::remove_cv<T>::type> {
111struct remove_reference {
115struct remove_reference<
T&> {
119struct remove_reference<
T&&> {
123using remove_reference_t =
typename remove_reference<T>::type;
126struct is_member_pointer_helper {
127 static constexpr bool value =
false;
129template <
class T,
class U>
130struct is_member_pointer_helper<
T U::*> {
131 static constexpr bool value =
true;
134struct is_member_pointer : is_member_pointer_helper<typename std::remove_cv<T>::type> {
137static constexpr bool is_member_pointer_v = is_member_pointer<T>::value;
GLsizei const GLfloat * value
GLint GLint GLsizei GLint GLenum GLenum type
Defining DataPointCompositeObject explicitly as copiable.