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)
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)
192 _PointerShim(
const volatile void*);
207 static _Tp& __null_rep();
208 enum { _Ptr = (
sizeof(_IsP(
false,__null_rep())) ==
sizeof(
char)) };
219template <
class _Tp>
struct _IsPtr {
242# if !defined (_STLP_HAS_TYPE_TRAITS_INTRINSICS)
257# if defined (_STLP_CLASS_PARTIAL_SPECIALIZATION)
258template <
class _Tp>
struct _IsPtr<_Tp*>
260template <
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)
315template <
class _ArePtrs,
class _Src,
class _Dst>
319template <
class _Src,
class _Dst>
323# if defined (_STLP_MEMBER_TEMPLATE_CLASSES)
324template <
class _ArePtrs>
325struct _IsCVConvertibleIfAux {
326 template <
class _Src,
class _Dst>
333 template <
class _Src,
class _Dst>
338template <
class _ArePtrs,
class _Src,
class _Dst>
340 typedef typename _IsCVConvertibleIfAux<_ArePtrs>::_STLP_TEMPLATE _In<_Src, _Dst>::_Ret
_Ret;
346template <
class _ArePtrs,
class _Src,
class _Dst>
352template <
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;
385template <
class _Src,
class _Dst>
388# if !defined (__BORLANDC__) || (__BORLANDC__ != 0x560)
391 typedef typename _UnConstPtr<_Src*>::_Type _UnConstSrc;
400template <
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)
455 typename ::boost::add_const<_Tp>::type,
458 typename ::boost::remove_const<_Tp>::type,
459 typename ::boost::add_reference<_Tp>::type>::_Ret
param_type;
466#if !defined (_STLP_USE_BOOST_SUPPORT) && !defined (_STLP_NO_EXTENSIONS) && defined (_STLP_CLASS_PARTIAL_SPECIALIZATION)
479template <
class _Tp1,
class _Tp2>
488template <
class _Tp1,
class _Tp2,
class _IsRef1,
class _IsRef2>
495template <
class _Tp1,
class _Tp2,
class _IsRef1,
class _IsRef2>
500template <
class _Src,
class _Dst>
504template <
class _Src,
class _Dst>
508#if defined (_STLP_FUNCTION_TMPL_PARTIAL_ORDER) || defined (__BORLANDC__) || \
510struct _NegativeAnswer {
512 static _Ret _Answer() {
return _Ret(); }
515template <
class _Src,
class _Dst>
517{
return _NegativeAnswer(); }
519template <
class _Src,
class _Dst>
521{
return _NegativeAnswer(); }
523template <
class _Src,
class _Dst>
525{
return _NegativeAnswer(); }
527template <
class _Src,
class _Dst>
529{
return _NegativeAnswer(); }
531template <
class _Src,
class _Dst>
533{
return _NegativeAnswer(); }
535template <
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)
584struct _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()
unsigned int(__cdecl typeof(jpeg_read_scanlines))(struct jpeg_decompress_struct *
unsigned short(__cdecl typeof(TIFFCurrentDirectory))(struct tiff *)
#define _STLP_TEMPLATE_NULL
#define _STLP_BEGIN_NAMESPACE
#define _STLP_END_NAMESPACE
GLuint GLuint GLsizei GLenum type
static const char mbstate_t *static wchar_t const char mbstate_t *static const wchar_t int *static double
static unsigned(__cdecl *hash_bstr)(bstr_t s)
static float(__cdecl *square_half_float)(float x
_IsPtr< _Tp1 >::_Ret _IsPtr1
_IsPtr< _Tp2 >::_Ret _IsPtr2
_Land2< _IsPtr1, _IsPtr2 >::_Ret _Ret
_DefaultZeroValue< _Tp >::_Ret _Ret
_Lor3< _Tr1, _Tr2, _Tr3 >::_Ret _Ret
_IsIntegral< _Tp >::_Ret _Tr1
_IsRational< _Tp >::_Ret _Tr2
__bool2type< is_integral >::_Ret _Ret
__type_traits< _Tp >::is_POD_type _Type
_IsPtr< _Tp >::_Ret _Type
__bool2type< is_pointer >::_Ret _Ret
_IsRef< _Tp >::_Ret _Type
__bool2type< _Is >::_Ret _Ret
_IsConvertible< _Tp, __stlport_class< _Tp > >::_Ret _Ret
__bool2type< _Is >::_Ret _Ret
_AreSameTypes< _Tp1, _Tp2 >::_Ret _Same
_Land3< _Same, _IsRef1, _IsRef2 >::_Ret _Type
__type_traits< _Src >::has_trivial_assignment_operator _Tr1
_Land2< _Tr1, _Tr2 >::_Ret _UserRet
_AreCopyable< _Src, _Dst >::_Ret _Tr2
_TrivialNativeTypeCopy< _Src, _Dst >::_Ret _NativeRet
_Lor2< _NativeRet, _UserRet >::_Ret _Ret
_Lor2< _BoostTrivialInit, _STLPTrivialInit >::_Ret _Tr1
_DefaultZeroValue< _Tp >::_Ret _Tr2
__type_traits< _Tp >::has_trivial_default_constructor _Tr1
_Land2< _Tr1, _Tr3 >::_Ret _Ret
_Lor2< _BothInts, _BothRats >::_Ret _BothNatives
_Land2< _Int1, _Int2 >::_Ret _BothInts
_IsIntegral< _Src >::_Ret _Int1
_Land2< _BothPtrs, _Convertible >::_Ret _Trivial1
_Land2< _Rat1, _Rat2 >::_Ret _BothRats
_IsPtr< _Src >::_Ret _Ptr1
_Land2< _BothNatives, _SameSize >::_Ret _Trivial2
_Land2< _Ptr1, _Ptr2 >::_Ret _BothPtrs
_Lor2< _Trivial1, _Trivial2 >::_Ret _Ret
_IsRational< _Dst >::_Ret _Rat2
_IsIntegral< _Dst >::_Ret _Int2
_IsRational< _Src >::_Ret _Rat1
_IsCVConvertibleIf< _BothPtrs, _Src, _Dst >::_Ret _Convertible
_IsPtr< _Dst >::_Ret _Ptr2
_Lor2< _NativeRet, _UserRet >::_Ret _Ret
__type_traits< _Src >::has_trivial_copy_constructor _Tr1
_AreCopyable< _Src, _Dst >::_Ret _Tr2
_Land2< _Tr1, _Tr2 >::_Ret _UserRet
_TrivialNativeTypeCopy< _Src, _Dst >::_Ret _NativeRet
const _Tp & const_param_type
__false_type has_trivial_destructor
__false_type has_trivial_copy_constructor
__false_type has_trivial_default_constructor
__false_type has_trivial_assignment_operator
__true_type has_trivial_default_constructor
__true_type has_trivial_assignment_operator
__true_type has_trivial_destructor
__true_type has_trivial_copy_constructor
__false_type has_trivial_assignment_operator
__false_type has_trivial_default_constructor
__false_type has_trivial_destructor
__false_type has_trivial_copy_constructor
__bool2type< pod >::_Ret is_POD_type
__bool2type< trivial_destructor >::_Ret has_trivial_destructor
__false_type has_trivial_assignment_operator
__false_type has_trivial_destructor
__bool2type< trivial_constructor >::_Ret has_trivial_default_constructor
__false_type has_trivial_copy_constructor
__bool2type< trivial_copy >::_Ret has_trivial_copy_constructor
__false_type has_trivial_default_constructor
__bool2type< trivial_assign >::_Ret has_trivial_assignment_operator
__true_type this_dummy_member_must_be_first
#define _STLP_DEFINE_TYPE_TRAITS_FOR(Type)
_DefaultZeroValueQuestion< _Tp > _HasDefaultZeroValue(_Tp *)
_OKToSwap< _Tp1, _Tp2, _IsRef1, _IsRef2 > _IsOKToSwap(_Tp1 *, _Tp2 *, const _IsRef1 &, const _IsRef2 &)
_IsPOD< _Tp > _Is_POD(_Tp *)
_TrivialInit< _Tp > _UseTrivialInit(_Tp *)
_TrivialUCopy< _Src, _Dst > _UseTrivialUCopy(_Src *, _Dst *)
_TrivialCopy< _Src, _Dst > _UseTrivialCopy(_Src *, _Dst *)