template struct cv::cudev::TypeTraits
#include <type_traits.hpp> template <typename T> struct TypeTraits { // typedefs typedef type_traits_detail::UnConst<T>::type non_const_type; typedef type_traits_detail::UnVolatile<T>::type non_volatile_type; typedef SelectIf<type_traits_detail::IsSimpleParameter<unqualified_type>::value, T, typename type_traits_detail::AddParameterType<T>::type>::type parameter_type; typedef type_traits_detail::PointerTraits<unqualified_type>::type pointee_type; typedef type_traits_detail::ReferenceTraits<T>::type referred_type; typedef type_traits_detail::UnVolatile<typename type_traits_detail::UnConst<T>::type>::type unqualified_type; // enums enum { is_const = type_traits_detail::UnConst<T>::value, }; enum { is_volatile = type_traits_detail::UnVolatile<T>::value, }; enum { is_reference = type_traits_detail::ReferenceTraits<unqualified_type>::value, }; enum { is_pointer = type_traits_detail::PointerTraits<typename type_traits_detail::ReferenceTraits<unqualified_type>::type>::value, }; enum { is_unsigned_int = type_traits_detail::IsUnsignedIntegral<unqualified_type>::value, }; enum { is_signed_int = type_traits_detail::IsSignedIntergral<unqualified_type>::value, }; enum { is_integral = type_traits_detail::IsIntegral<unqualified_type>::value, }; enum { is_float = type_traits_detail::IsFloat<unqualified_type>::value, }; enum { is_scalar = is_integral || is_float, }; enum { is_vec = type_traits_detail::IsVec<unqualified_type>::value, }; };