32#ifndef _RWSTD_RW_SELECT_H_INCLUDED
33#define _RWSTD_RW_SELECT_H_INCLUDED
35#ifndef _RWSTD_RW_DEFS_H_INCLUDED
42struct __rw_false_t {
enum { _C_val }; };
43struct __rw_true_t {
enum { _C_val = 1 }; };
46template <
class _TypeT>
49 typedef void* _SelectT;
51#if defined (__SUNPRO_CC) && __SUNPRO_CC <= 0x530
59#define _RWSTD_SPECIALIZE_IS_INT(T) \
60 _RWSTD_SPECIALIZED_CLASS \
61 struct __rw_select_int<T> { \
62 typedef int _SelectT; \
63 enum { _C_selector = 1 }; \
66#ifndef _RWSTD_NO_NATIVE_BOOL
80#ifdef _RWSTD_LONG_LONG
85#ifndef _RWSTD_NO_NATIVE_WCHAR_T
90#if !defined (__SUNPRO_CC) || __SUNPRO_CC > 0x530
91# define _RWSTD_DISPATCH(iter) \
92 (typename _RW::__rw_select_int< iter >::_SelectT (1L))
96# define _RWSTD_DISPATCH(iter) _RW::__rw_select_int< iter >()._C_selector
100#ifndef _RWSTD_NO_CLASS_PARTIAL_SPEC
102template <
class _TypeT,
class _TypeU>
105 typedef __rw_false_t _C_type;
109template <
class _TypeT>
110struct __rw_same_type<_TypeT, _TypeT>
112 typedef __rw_true_t _C_type;
121 typedef __rw_false_t _C_type;
125struct __rw_bool_t<
true>
127 typedef __rw_true_t _C_type;
130template <
class _TypeT,
class _TypeU>
134 struct _C_no { _C_yes no_ [2]; };
135 template <
class _TypeV>
138 static _C_yes
test (_C_Type<_TypeT>, _C_Type<_TypeT>);
139 static _C_no
test (...);
141 enum { _C_val =
sizeof (
test (_C_Type<_TypeT> (),
142 _C_Type<_TypeU> ())) ==
sizeof (_C_yes) };
144 typedef typename __rw_bool_t<_C_val>::_C_type _C_type;
153# if defined (__IBMCPP__) && __IBMCPP__ <= 500
156_USING (__rw::__rw_select_int);
#define _RWSTD_SPECIALIZED_CLASS
#define _RWSTD_NAMESPACE(name)
#define _RWSTD_SPECIALIZE_IS_INT(T)