18#ifndef _STLP_TYPE_MANIPS_H
19#define _STLP_TYPE_MANIPS_H
26#if defined (_STLP_USE_NAMESPACES) && !defined (_STLP_DONT_USE_PRIV_NAMESPACE)
28using _STLP_STD::__true_type;
29using _STLP_STD::__false_type;
45template <
class __
bool_type>
55template <
class _BoolType>
62template <
class _P1,
class _P2>
69template <
class _P1,
class _P2,
class _P3>
76template <
class _P1,
class _P2>
83template <
class _P1,
class _P2,
class _P3>
102#if defined (_STLP_CLASS_PARTIAL_SPECIALIZATION)
103# if defined (__BORLANDC__)
104template <
class _CondT,
class _Tp1,
class _Tp2>
105struct __selectT {
typedef _Tp1 _Ret; };
107template <
class _Tp1,
class _Tp2>
108struct __selectT<
__false_type, _Tp1, _Tp2> {
typedef _Tp2 _Ret; };
111# if !defined (__BORLANDC__) || (__BORLANDC__ >= 0x590)
112template <
bool _Cond,
class _Tp1,
class _Tp2>
115template <
class _Tp1,
class _Tp2>
118template <
bool _Cond,
class _Tp1,
class _Tp2>
120{
typedef __selectT<typename __bool2type<_Cond>::_Ret, _Tp1, _Tp2>
::_Ret _Ret; };
125# if defined (_STLP_MEMBER_TEMPLATE_CLASSES)
128 template <
class _Tp1,
class _Tp2>
135struct __select_aux<0> {
136 template <
class _Tp1,
class _Tp2>
142template <
int _Cond,
class _Tp1,
class _Tp2>
144 typedef typename __select_aux<_Cond>::_STLP_TEMPLATE _In<_Tp1, _Tp2>::_Ret
_Ret;
148template <
int _Cond,
class _Tp1,
class _Tp2>
160#if !defined (_STLP_DONT_SIMULATE_PARTIAL_SPEC_FOR_TYPE_TRAITS) && \
161 (!defined (__GNUC__) || (__GNUC__ > 2))
163# if !defined (__BORLANDC__)
169template <
class _Src,
class _Dst>
178template <
class _Tp>
struct _IsUnQual;
179template <
class _Src,
class _Dst>
182 typedef typename _IsUnQual<_Dst>::_Ret _Tr2;
188template <
class _Src,
class _Dst>
202template <
class _Src,
class _Dst>
208template <
class _Tp1,
class _Tp2>
214#if defined (_STLP_CLASS_PARTIAL_SPECIALIZATION)
222#if !defined (_STLP_DONT_SIMULATE_PARTIAL_SPEC_FOR_TYPE_TRAITS)
223template <
class _Src,
class _Dst>
230template <
class _Src,
class _Dst>
237# if defined (__BORLANDC__)
238# if (__BORLANDC__ < 0x590)
240struct _UnConstPtr {
typedef _Tp _Type; };
243struct _UnConstPtr<_Tp*> {
typedef _Tp _Type; };
246struct _UnConstPtr<
const _Tp*> {
typedef _Tp _Type; };
249# if !defined (_STLP_QUALIFIED_SPECIALIZATION_BUG)
257# if defined (_STLP_CLASS_PARTIAL_SPECIALIZATION) && !defined (_STLP_QUALIFIED_SPECIALIZATION_BUG)
262# if (__BORLANDC__ < 0x590)
271 typedef _IsConst<_Tp>::_Ret _Tr1;
272 typedef _IsVolatile<_Tp>::_Ret _Tr2;
278# if !defined (_STLP_QUALIFIED_SPECIALIZATION_BUG)
279template <
class _Tp>
struct _UnQual {
typedef _Tp _Type; };
280template <
class _Tp>
struct _UnQual<
const _Tp> {
typedef _Tp _Type; };
281template <
class _Tp>
struct _UnQual<
volatile _Tp> {
typedef _Tp _Type; };
282template <
class _Tp>
struct _UnQual<
const volatile _Tp> {
typedef _Tp _Type; };
292template <
class _Src,
class _Dst>
294# if !defined (__BORLANDC__) || (__BORLANDC__ >= 0x590)
300 enum {
value = _Is1 ? 0 : _Is2 };
306template <
class _Src,
class _Dst>
312template <
class _Src,
class _Dst>
#define _STLP_TEMPLATE_NULL
#define _STLP_MOVE_TO_STD_NAMESPACE
#define _STLP_BEGIN_NAMESPACE
#define _STLP_END_NAMESPACE
#define _STLP_MOVE_TO_PRIV_NAMESPACE
_Copyable< _Src, _Dst >::_RetT _Ret
static char _Test(bool, _Dst)
static _Src _MakeSource()
static char * _Test(bool,...)
static _Dst * __null_dst()
static _Src * __null_src()
__bool2type< _Ret >::_Ret _RetT
__bool2type< value >::_Ret _Ret
_ConversionHelper< _Src, _Dst > _H
__bool2type< value >::_Ret _Ret
_ConversionHelper< _Src *, const volatile _Dst * > _H
_NoVolatilePointerShim(const void *)
char _STLP_CALL _IsCopyableFun(bool, _NoVolatilePointerShim, _Tp const *, _Tp *)