OpenSiv3D  v0.6.5
C++20 framework for creative coding
Meta.hpp File Reference
#include <type_traits>

Classes

struct  s3d::Meta::HasUnaryPlus< class, class >
 
struct  s3d::Meta::HasUnaryPlus< Type, std::void_t< decltype(+std::declval< Type & >())> >
 
struct  s3d::Meta::HasNegate< class, class >
 
struct  s3d::Meta::HasNegate< Type, std::void_t< decltype(-std::declval< Type & >())> >
 
struct  s3d::Meta::HasPreIncrement< class, class >
 
struct  s3d::Meta::HasPreIncrement< Type, std::void_t< decltype(++std::declval< Type & >())> >
 
struct  s3d::Meta::HasPreDecrement< class, class >
 
struct  s3d::Meta::HasPreDecrement< Type, std::void_t< decltype(--std::declval< Type & >())> >
 
struct  s3d::Meta::HasOperatorBool< class, class >
 
struct  s3d::Meta::HasOperatorBool< Type, std::void_t< decltype(!std::declval< Type & >(), std::declval< Type & >() ? 0 :0)> >
 
struct  s3d::Meta::HasLogicalNot< class, class >
 
struct  s3d::Meta::HasLogicalNot< Type, std::void_t< decltype(!std::declval< Type & >())> >
 
struct  s3d::Meta::HasComplement< class, class >
 
struct  s3d::Meta::HasComplement< Type, std::void_t< decltype(~std::declval< Type & >())> >
 
struct  s3d::Meta::HasAddressOf< class, class >
 
struct  s3d::Meta::HasAddressOf< Type, std::void_t< decltype(&std::declval< Type & >())> >
 
struct  s3d::Meta::HasOverloadedAddressOf< class, class >
 
struct  s3d::Meta::HasOverloadedAddressOf< Type, std::void_t< decltype(std::declval< Type & >().operator&())> >
 
struct  s3d::Meta::HasPostIncrement< class, class >
 
struct  s3d::Meta::HasPostIncrement< Type, std::void_t< decltype(std::declval< Type & >()++)> >
 
struct  s3d::Meta::HasPostDecrement< class, class >
 
struct  s3d::Meta::HasPostDecrement< Type, std::void_t< decltype(std::declval< Type & >() --)> >
 
struct  s3d::Meta::HasPlus< Type, Arg, class >
 
struct  s3d::Meta::HasPlus< Type, Arg, std::void_t< decltype(std::declval< Type & >()+std::declval< Arg & >())> >
 
struct  s3d::Meta::HasMinus< Type, Arg, class >
 
struct  s3d::Meta::HasMinus< Type, Arg, std::void_t< decltype(std::declval< Type & >() - std::declval< Arg & >())> >
 
struct  s3d::Meta::HasMultiply< Type, Arg, class >
 
struct  s3d::Meta::HasMultiply< Type, Arg, std::void_t< decltype(std::declval< Type & >() *std::declval< Arg & >())> >
 
struct  s3d::Meta::HasDivide< Type, Arg, class >
 
struct  s3d::Meta::HasDivide< Type, Arg, std::void_t< decltype(std::declval< Type & >()/std::declval< Arg & >())> >
 
struct  s3d::Meta::HasModulus< Type, Arg, class >
 
struct  s3d::Meta::HasModulus< Type, Arg, std::void_t< decltype(std::declval< Type & >() % std::declval< Arg & >())> >
 
struct  s3d::Meta::HasPlusAssign< Type, Arg, class >
 
struct  s3d::Meta::HasPlusAssign< Type, Arg, std::void_t< decltype(std::declval< Type & >()+=std::declval< Arg & >())> >
 
struct  s3d::Meta::HasMinusAssign< Type, Arg, class >
 
struct  s3d::Meta::HasMinusAssign< Type, Arg, std::void_t< decltype(std::declval< Type & >() -=std::declval< Arg & >())> >
 
struct  s3d::Meta::HasMultiplyAssign< Type, Arg, class >
 
struct  s3d::Meta::HasMultiplyAssign< Type, Arg, std::void_t< decltype(std::declval< Type & >() *=std::declval< Arg & >())> >
 
struct  s3d::Meta::HasDivideAssign< Type, Arg, class >
 
struct  s3d::Meta::HasDivideAssign< Type, Arg, std::void_t< decltype(std::declval< Type & >()/=std::declval< Arg & >())> >
 
struct  s3d::Meta::HasModulusAssign< Type, Arg, class >
 
struct  s3d::Meta::HasModulusAssign< Type, Arg, std::void_t< decltype(std::declval< Type & >() %=std::declval< Arg & >())> >
 
struct  s3d::Meta::HasEqualTo< Type, Arg, class >
 
struct  s3d::Meta::HasEqualTo< Type, Arg, std::void_t< decltype(std::declval< Type & >()==std::declval< Arg & >())> >
 
struct  s3d::Meta::HasNotEqualTo< Type, Arg, class >
 
struct  s3d::Meta::HasNotEqualTo< Type, Arg, std::void_t< decltype(std::declval< Type & >() !=std::declval< Arg & >())> >
 
struct  s3d::Meta::HasLessThan< Type, Arg, class >
 
struct  s3d::Meta::void_t< decltype(std::declval< Type & >()< std::declval< Arg & >())> >
 
struct  s3d::Meta::HasLessThanEqual< Type, Arg, class >
 
struct  s3d::Meta::void_t< decltype(std::declval< Type & >()<=std::declval< Arg & >())> >
 
struct  s3d::Meta::HasGreaterThan< Type, Arg, class >
 
struct  s3d::Meta::declval< Arg & >())> >
 
struct  s3d::Meta::HasGreaterThanEqual< Type, Arg, class >
 
struct  s3d::Meta::declval< Arg & >())> >
 
struct  s3d::Meta::HasBitwiseAnd< Type, Arg, class >
 
struct  s3d::Meta::HasBitwiseAnd< Type, Arg, std::void_t< decltype(std::declval< Type & >()&std::declval< Arg & >())> >
 
struct  s3d::Meta::HasBitwiseOr< Type, Arg, class >
 
struct  s3d::Meta::HasBitwiseOr< Type, Arg, std::void_t< decltype(std::declval< Type & >()|std::declval< Arg & >())> >
 
struct  s3d::Meta::HasBitwiseXor< Type, Arg, class >
 
struct  s3d::Meta::HasBitwiseXor< Type, Arg, std::void_t< decltype(std::declval< Type & >() ^ std::declval< Arg & >())> >
 
struct  s3d::Meta::HasBitwiseAndAssign< Type, Arg, class >
 
struct  s3d::Meta::HasBitwiseAndAssign< Type, Arg, std::void_t< decltype(std::declval< Type & >() &=std::declval< Arg & >())> >
 
struct  s3d::Meta::HasBitwiseOrAssign< Type, Arg, class >
 
struct  s3d::Meta::HasBitwiseOrAssign< Type, Arg, std::void_t< decltype(std::declval< Type & >()|=std::declval< Arg & >())> >
 
struct  s3d::Meta::HasBitwiseXorAssign< Type, Arg, class >
 
struct  s3d::Meta::HasBitwiseXorAssign< Type, Arg, std::void_t< decltype(std::declval< Type & >() ^=std::declval< Arg & >())> >
 
struct  s3d::Meta::HasLeftShift< Type, Arg, class >
 
struct  s3d::Meta::declval< Type & >()<< std::declval< Arg & >())> >
 
struct  s3d::Meta::HasRightShift< Type, Arg, class >
 
struct  s3d::Meta::HasLeftShiftAssign< Type, Arg, class >
 
struct  s3d::Meta::declval< Type & >()<<=std::declval< Arg & >())> >
 
struct  s3d::Meta::HasRightShiftAssign< Type, Arg, class >
 
struct  s3d::Meta::HasLogicalAnd< Type, Arg, class >
 
struct  s3d::Meta::HasLogicalAnd< Type, Arg, std::void_t< decltype(std::declval< Type & >() &&std::declval< Arg & >())> >
 
struct  s3d::Meta::HasLogicalOr< Type, Arg, class >
 
struct  s3d::Meta::HasLogicalOr< Type, Arg, std::void_t< decltype(std::declval< Type & >()||std::declval< Arg & >())> >
 
struct  s3d::Meta::HasAsArray< ArrayIsh >
 

Namespaces

 s3d
 
 s3d::Meta
 

Variables

template<class Type >
constexpr bool s3d::Meta::HasUnaryPlus_v = HasUnaryPlus<Type>::value
 
template<class Type >
constexpr bool s3d::Meta::HasNegate_v = HasNegate<Type>::value
 
template<class Type >
constexpr bool s3d::Meta::HasPreIncrement_v = HasPreIncrement<Type>::value
 
template<class Type >
constexpr bool s3d::Meta::HasPreDecrement_v = HasPreDecrement<Type>::value
 
template<class Type >
constexpr bool s3d::Meta::HasOperatorBool_v = HasOperatorBool<Type>::value
 
template<class Type >
constexpr bool s3d::Meta::HasLogicalNot_v = HasLogicalNot<Type>::value
 
template<class Type >
constexpr bool s3d::Meta::HasComplement_v = HasComplement<Type>::value
 
template<class Type >
constexpr bool s3d::Meta::HasAddressOf_v = HasAddressOf<Type>::value
 
template<class Type >
constexpr bool s3d::Meta::HasOverloadedAddressOf_v = HasOverloadedAddressOf<Type>::value
 
template<class Type >
constexpr bool s3d::Meta::HasPostIncrement_v = HasPostIncrement<Type>::value
 
template<class Type >
constexpr bool s3d::Meta::HasPostDecrement_v = HasPostDecrement<Type>::value
 
template<class Type , class Type2 = Type>
constexpr bool s3d::Meta::HasPlus_v = HasPlus<Type, Type2>::value
 
template<class Type , class Type2 = Type>
constexpr bool s3d::Meta::HasMinus_v = HasMinus<Type, Type2>::value
 
template<class Type , class Type2 = Type>
constexpr bool s3d::Meta::HasMultiply_v = HasMultiply<Type, Type2>::value
 
template<class Type , class Type2 = Type>
constexpr bool s3d::Meta::HasDivide_v = HasDivide<Type, Type2>::value
 
template<class Type , class Type2 = Type>
constexpr bool s3d::Meta::HasModulus_v = HasModulus<Type, Type2>::value
 
template<class Type , class Type2 = Type>
constexpr bool s3d::Meta::HasPlusAssign_v = HasPlusAssign<Type, Type2>::value
 
template<class Type , class Type2 = Type>
constexpr bool s3d::Meta::HasMinusAssign_v = HasMinusAssign<Type, Type2>::value
 
template<class Type , class Type2 = Type>
constexpr bool s3d::Meta::HasMultiplyAssign_v = HasMultiplyAssign<Type, Type2>::value
 
template<class Type , class Type2 = Type>
constexpr bool s3d::Meta::HasDivideAssign_v = HasDivideAssign<Type, Type2>::value
 
template<class Type , class Type2 = Type>
constexpr bool s3d::Meta::HasModulusAssign_v = HasModulusAssign<Type, Type2>::value
 
template<class Type , class Type2 = Type>
constexpr bool s3d::Meta::HasEqualTo_v = HasEqualTo<Type, Type2>::value
 
template<class Type , class Type2 = Type>
constexpr bool s3d::Meta::HasNotEqualTo_v = HasNotEqualTo<Type, Type2>::value
 
template<class Type , class Type2 = Type>
constexpr bool s3d::Meta::HasLessThan_v = HasLessThan<Type, Type2>::value
 
template<class Type , class Type2 = Type>
constexpr bool s3d::Meta::HasLessThanEqual_v = HasLessThanEqual<Type, Type2>::value
 
template<class Type , class Type2 = Type>
constexpr bool s3d::Meta::HasGreaterThan_v = HasGreaterThan<Type, Type2>::value
 
template<class Type , class Type2 = Type>
constexpr bool s3d::Meta::HasGreaterThanEqual_v = HasGreaterThanEqual<Type, Type2>::value
 
template<class Type , class Type2 = Type>
constexpr bool s3d::Meta::HasBitwiseAnd_v = HasBitwiseAnd<Type, Type2>::value
 
template<class Type , class Type2 = Type>
constexpr bool s3d::Meta::HasBitwiseOr_v = HasBitwiseOr<Type, Type2>::value
 
template<class Type , class Type2 = Type>
constexpr bool s3d::Meta::HasBitwiseXor_v = HasBitwiseXor<Type, Type2>::value
 
template<class Type , class Type2 = Type>
constexpr bool s3d::Meta::HasBitwiseAndAssign_v = HasBitwiseAndAssign<Type, Type2>::value
 
template<class Type , class Type2 = Type>
constexpr bool s3d::Meta::HasBitwiseOrAssign_v = HasBitwiseOrAssign<Type, Type2>::value
 
template<class Type , class Type2 = Type>
constexpr bool s3d::Meta::HasBitwiseXorAssign_v = HasBitwiseXorAssign<Type, Type2>::value
 
template<class Type , class Type2 = Type>
constexpr bool s3d::Meta::HasLeftShift_v = HasLeftShift<Type, Type2>::value
 
template<class Type , class Type2 = Type>
constexpr bool s3d::Meta::HasRightShift_v = HasRightShift<Type, Type2>::value
 
template<class Type , class Type2 = Type>
constexpr bool s3d::Meta::HasLeftShiftAssign_v = HasLeftShiftAssign<Type, Type2>::value
 
template<class Type , class Type2 = Type>
constexpr bool s3d::Meta::HasRightShiftAssign_v = HasRightShiftAssign<Type, Type2>::value
 
template<class Type , class Type2 = Type>
constexpr bool s3d::Meta::HasLogicalAnd_v = HasLogicalAnd<Type, Type2>::value
 
template<class Type , class Type2 = Type>
constexpr bool s3d::Meta::HasLogicalOr_v = HasLogicalOr<Type, Type2>::value