NIM 跨平台 C++ SDK
载入中...
搜索中...
未找到
phmap::priv::internal_layout 命名空间参考

命名空间

namespace  adl_barrier
 

struct  AlignOf
 
struct  AlignOf< Aligned< T, N > >
 
class  LayoutImpl
 
class  LayoutImpl< std::tuple< Elements... >, phmap::index_sequence< SizeSeq... >, phmap::index_sequence< OffsetSeq... > >
 
struct  NotAligned
 
struct  NotAligned< const Aligned< T, N > >
 
struct  SizeOf
 
struct  SizeOf< Aligned< T, N > >
 
struct  Type
 
struct  Type< Aligned< T, N > >
 

类型定义

template<size_t >
using IntToSize = size_t
 
template<class >
using TypeToSize = size_t
 
template<class T , class... Ts>
using Contains = phmap::disjunction< std::is_same< T, Ts >... >
 
template<class From , class To >
using CopyConst = typename std::conditional< std::is_const< From >::value, const To, To >::type
 
template<class T >
using SliceType = Span< T >
 
template<bool C>
using EnableIf = typename std::enable_if< C, int >::type
 
template<class T >
using IsLegalElementType = std::integral_constant< bool, !std::is_reference< T >::value &&!std::is_volatile< T >::value &&!std::is_reference< typename Type< T >::type >::value &&!std::is_volatile< typename Type< T >::type >::value &&adl_barrier::IsPow2(AlignOf< T >::value)>
 
template<size_t NumSizes, class... Ts>
using LayoutType = LayoutImpl< std::tuple< Ts... >, phmap::make_index_sequence< NumSizes >, phmap::make_index_sequence< adl_barrier::Min(sizeof...(Ts), NumSizes+1)> >
 

类型定义说明

◆ Contains

template<class T , class... Ts>
using phmap::priv::internal_layout::Contains = typedef phmap::disjunction<std::is_same<T, Ts>...>

◆ CopyConst

template<class From , class To >
using phmap::priv::internal_layout::CopyConst = typedef typename std::conditional<std::is_const<From>::value, const To, To>::type

◆ EnableIf

template<bool C>
using phmap::priv::internal_layout::EnableIf = typedef typename std::enable_if<C, int>::type

◆ IntToSize

template<size_t >
using phmap::priv::internal_layout::IntToSize = typedef size_t

◆ IsLegalElementType

template<class T >
using phmap::priv::internal_layout::IsLegalElementType = typedef std::integral_constant< bool, !std::is_reference<T>::value && !std::is_volatile<T>::value && !std::is_reference<typename Type<T>::type>::value && !std::is_volatile<typename Type<T>::type>::value && adl_barrier::IsPow2(AlignOf<T>::value)>

◆ LayoutType

template<size_t NumSizes, class... Ts>
using phmap::priv::internal_layout::LayoutType = typedef LayoutImpl< std::tuple<Ts...>, phmap::make_index_sequence<NumSizes>, phmap::make_index_sequence<adl_barrier::Min(sizeof...(Ts), NumSizes + 1)> >

◆ SliceType

template<class T >
using phmap::priv::internal_layout::SliceType = typedef Span<T>

◆ TypeToSize

template<class >
using phmap::priv::internal_layout::TypeToSize = typedef size_t