23 #ifndef _STLP_TYPE_TRAITS_H 24 #define _STLP_TYPE_TRAITS_H 62 #ifndef _STLP_TYPE_MANIPS_H 66 #ifdef _STLP_USE_BOOST_SUPPORT 68 # include <boost/type_traits/add_reference.hpp> 69 # include <boost/type_traits/add_const.hpp> 74 #if !defined (_STLP_USE_BOOST_SUPPORT) 82 # ifndef _STLP_NO_BOOL 90 # ifndef _STLP_NO_SIGNED_BUILTINS 98 # if defined ( _STLP_HAS_WCHAR_T ) && ! defined (_STLP_WCHAR_T_IS_USHORT) 121 # ifdef _STLP_LONG_LONG 138 # if !defined ( _STLP_NO_LONG_DOUBLE ) 176 # if defined (_STLP_SIMULATE_PARTIAL_SPEC_FOR_TYPE_TRAITS) 185 struct _PointerShim {
192 _PointerShim(
const volatile void*);
207 static _Tp& __null_rep();
208 enum { _Ptr = (
sizeof(_IsP(
false,__null_rep())) ==
sizeof(
char)) };
219 template <
class _Tp>
struct _IsPtr {
242 # if !defined (_STLP_HAS_TYPE_TRAITS_INTRINSICS) 257 # if defined (_STLP_CLASS_PARTIAL_SPECIALIZATION) 258 template <
class _Tp>
struct _IsPtr<_Tp*>
260 template <
class _Tp>
struct _IsRef<_Tp&>
272 # if !defined (_STLP_QUALIFIED_SPECIALIZATION_BUG) 273 # define _STLP_DEFINE_TYPE_TRAITS_FOR(Type) \ 274 _STLP_TEMPLATE_NULL struct __type_traits< Type > : __type_traits_aux<__true_type> {}; \ 275 _STLP_TEMPLATE_NULL struct __type_traits< const Type > : __type_traits_aux<__true_type> {}; \ 276 _STLP_TEMPLATE_NULL struct __type_traits< volatile Type > : __type_traits_aux<__true_type> {}; \ 277 _STLP_TEMPLATE_NULL struct __type_traits< const volatile Type > : __type_traits_aux<__true_type> {} 279 # define _STLP_DEFINE_TYPE_TRAITS_FOR(Type) \ 280 _STLP_TEMPLATE_NULL struct __type_traits< Type > : __type_traits_aux<__true_type> {}; 283 # ifndef _STLP_NO_BOOL 287 # ifndef _STLP_NO_SIGNED_BUILTINS 291 # if defined ( _STLP_HAS_WCHAR_T ) && ! defined (_STLP_WCHAR_T_IS_USHORT) 302 # ifdef _STLP_LONG_LONG 310 # if !defined ( _STLP_NO_LONG_DOUBLE ) 314 # if defined (_STLP_CLASS_PARTIAL_SPECIALIZATION) 315 template <
class _ArePtrs,
class _Src,
class _Dst>
319 template <
class _Src,
class _Dst>
323 # if defined (_STLP_MEMBER_TEMPLATE_CLASSES) 324 template <
class _ArePtrs>
325 struct _IsCVConvertibleIfAux {
326 template <
class _Src,
class _Dst>
333 template <
class _Src,
class _Dst>
338 template <
class _ArePtrs,
class _Src,
class _Dst>
346 template <
class _ArePtrs,
class _Src,
class _Dst>
352 template <
class _Src,
class _Dst>
362 #if !defined (__BORLANDC__) || (__BORLANDC__ < 0x564) 365 typedef typename _UnQual<_Src>::_Type _UnQuSrc;
376 #if !defined (__BORLANDC__) || (__BORLANDC__ >= 0x564) 379 typedef typename _IsUnQual<_Dst>::_Ret _UnQualDst;
385 template <
class _Src,
class _Dst>
388 # if !defined (__BORLANDC__) || (__BORLANDC__ != 0x560) 391 typedef typename _UnConstPtr<_Src*>::_Type _UnConstSrc;
400 template <
class _Src,
class _Dst>
403 # if !defined (__BORLANDC__) || (__BORLANDC__ != 0x560) 406 typedef typename _UnConstPtr<_Src*>::_Type _UnConstSrc;
425 # if !defined (__BORLANDC__) || (__BORLANDC__ != 0x560) 428 typedef typename _UnConstPtr<_Tp*>::_Type _Tp1;
453 #if defined (_STLP_USE_BOOST_SUPPORT) && !defined (_STLP_NO_EXTENSIONS) 466 #if !defined (_STLP_USE_BOOST_SUPPORT) && !defined (_STLP_NO_EXTENSIONS) && defined (_STLP_CLASS_PARTIAL_SPECIALIZATION) 479 template <
class _Tp1,
class _Tp2>
488 template <
class _Tp1,
class _Tp2,
class _IsRef1,
class _IsRef2>
495 template <
class _Tp1,
class _Tp2,
class _IsRef1,
class _IsRef2>
500 template <
class _Src,
class _Dst>
504 template <
class _Src,
class _Dst>
508 #if defined (_STLP_FUNCTION_TMPL_PARTIAL_ORDER) || defined (__BORLANDC__) || \ 510 struct _NegativeAnswer {
512 static _Ret _Answer() {
return _Ret(); }
515 template <
class _Src,
class _Dst>
517 {
return _NegativeAnswer(); }
519 template <
class _Src,
class _Dst>
521 {
return _NegativeAnswer(); }
523 template <
class _Src,
class _Dst>
525 {
return _NegativeAnswer(); }
527 template <
class _Src,
class _Dst>
529 {
return _NegativeAnswer(); }
531 template <
class _Src,
class _Dst>
533 {
return _NegativeAnswer(); }
535 template <
class _Src,
class _Dst>
537 {
return _NegativeAnswer(); }
577 #if defined (__BORLANDC__) 582 #if defined (_STLP_USE_PARTIAL_SPEC_WORKAROUND) && !defined (_STLP_FUNCTION_TMPL_PARTIAL_ORDER) 584 struct _SwapImplemented {
586 # if defined (__BORLANDC__) 608 #ifdef _STLP_CLASS_PARTIAL_SPECIALIZATION 609 # if defined (__BORLANDC__) || \ 610 defined (__SUNPRO_CC) || \ 611 (defined (__MWERKS__) && (__MWERKS__ <= 0x2303)) || \ 612 (defined (__sgi) && defined (_COMPILER_VERSION)) || \ 614 # define _STLP_IS_POD_ITER(_It, _Tp) __type_traits< typename iterator_traits< _Tp >::value_type >::is_POD_type() 616 # define _STLP_IS_POD_ITER(_It, _Tp) typename __type_traits< typename iterator_traits< _Tp >::value_type >::is_POD_type() 619 # define _STLP_IS_POD_ITER(_It, _Tp) _Is_POD( _STLP_VALUE_TYPE( _It, _Tp ) )._Answer()
_IsCVConvertibleIf< _BothPtrs, _Src, _Dst >::_Ret _Convertible
_AreSameTypes< _Tp1, _Tp2 >::_Ret _Same
const _Tp & const_param_type
_Land2< _Tr1, _Tr2 >::_Ret _UserRet
__false_type has_trivial_copy_constructor
__true_type has_trivial_assignment_operator
#define _STLP_DEFINE_TYPE_TRAITS_FOR(Type)
_OKToSwap< _Tp1, _Tp2, _IsRef1, _IsRef2 > _IsOKToSwap(_Tp1 *, _Tp2 *, const _IsRef1 &, const _IsRef2 &)
_TrivialNativeTypeCopy< _Src, _Dst >::_Ret _NativeRet
__false_type has_trivial_assignment_operator
_Land2< _BothPtrs, _Convertible >::_Ret _Trivial1
__bool2type< pod >::_Ret is_POD_type
_IsPtr< _Src >::_Ret _Ptr1
__type_traits< _Src >::has_trivial_copy_constructor _Tr1
_IsPtr< _Tp >::_Ret _Type
_Lor3< _Tr1, _Tr2, _Tr3 >::_Ret _Ret
_Lor2< _Trivial1, _Trivial2 >::_Ret _Ret
__false_type has_trivial_destructor
_IsRef< _Tp >::_Ret _Type
__false_type has_trivial_copy_constructor
_DefaultZeroValueQuestion< _Tp > _HasDefaultZeroValue(_Tp *)
_Lor2< _NativeRet, _UserRet >::_Ret _Ret
_Land2< _Rat1, _Rat2 >::_Ret _BothRats
_IsIntegral< _Src >::_Ret _Int1
__true_type this_dummy_member_must_be_first
_Lor2< _BoostTrivialInit, _STLPTrivialInit >::_Ret _Tr1
_AreCopyable< _Src, _Dst >::_Ret _Tr2
_IsPtr< _Tp1 >::_Ret _IsPtr1
unsigned short(__cdecl typeof(TIFFCurrentDirectory))(struct tiff *)
__false_type has_trivial_default_constructor
__type_traits< _Tp >::is_POD_type _Type
_TrivialUCopy< _Src, _Dst > _UseTrivialUCopy(_Src *, _Dst *)
__false_type has_trivial_default_constructor
static const char mbstate_t *static wchar_t const char mbstate_t *static const wchar_t int *static double
__true_type has_trivial_copy_constructor
__type_traits< _Src >::has_trivial_assignment_operator _Tr1
__type_traits< _Tp >::has_trivial_default_constructor _Tr1
_AreCopyable< _Src, _Dst >::_Ret _Tr2
_Land2< _Ptr1, _Ptr2 >::_Ret _BothPtrs
typedef bool(CARDLIBPROC *pCanDragProc)(CardRegion &stackobj
_IsRational< _Tp >::_Ret _Tr2
_Land2< _Tr1, _Tr3 >::_Ret _Ret
__false_type has_trivial_destructor
__true_type has_trivial_destructor
__false_type has_trivial_assignment_operator
_IsIntegral< _Tp >::_Ret _Tr1
__bool2type< trivial_constructor >::_Ret has_trivial_default_constructor
_DefaultZeroValue< _Tp >::_Ret _Tr2
_IsIntegral< _Dst >::_Ret _Int2
__true_type has_trivial_default_constructor
_IsRational< _Src >::_Ret _Rat1
_DefaultZeroValue< _Tp >::_Ret _Ret
_TrivialCopy< _Src, _Dst > _UseTrivialCopy(_Src *, _Dst *)
__false_type has_trivial_assignment_operator
#define _STLP_TEMPLATE_NULL
_Land2< _Int1, _Int2 >::_Ret _BothInts
__bool2type< is_integral >::_Ret _Ret
_IsPtr< _Dst >::_Ret _Ptr2
_TrivialInit< _Tp > _UseTrivialInit(_Tp *)
__false_type has_trivial_copy_constructor
__bool2type< is_pointer >::_Ret _Ret
__bool2type< _Is >::_Ret _Ret
_Land2< _BothNatives, _SameSize >::_Ret _Trivial2
_IsConvertible< _Tp, __stlport_class< _Tp > >::_Ret _Ret
static float(__cdecl *square_half_float)(float x
_TrivialNativeTypeCopy< _Src, _Dst >::_Ret _NativeRet
_IsRational< _Dst >::_Ret _Rat2
__bool2type< trivial_assign >::_Ret has_trivial_assignment_operator
#define _STLP_END_NAMESPACE
_Land2< _IsPtr1, _IsPtr2 >::_Ret _Ret
__bool2type< trivial_copy >::_Ret has_trivial_copy_constructor
_IsPtr< _Tp2 >::_Ret _IsPtr2
_IsPOD< _Tp > _Is_POD(_Tp *)
#define _STLP_BEGIN_NAMESPACE
GLuint GLuint GLsizei GLenum type
_Lor2< _NativeRet, _UserRet >::_Ret _Ret
_Land3< _Same, _IsRef1, _IsRef2 >::_Ret _Type
__false_type has_trivial_default_constructor
__bool2type< trivial_destructor >::_Ret has_trivial_destructor
__false_type has_trivial_destructor
_Lor2< _BothInts, _BothRats >::_Ret _BothNatives
static unsigned(__cdecl *hash_bstr)(bstr_t s)
__bool2type< _Is >::_Ret _Ret
unsigned int(__cdecl typeof(jpeg_read_scanlines))(struct jpeg_decompress_struct *
_Land2< _Tr1, _Tr2 >::_Ret _UserRet