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,
};
};