30#ifndef _RWSTD_RW_META_CV_H_INCLUDED
31#define _RWSTD_RW_META_CV_H_INCLUDED
39template <
class _TypeT>
40struct __rw_remove_const
45template <
class _TypeT>
46struct __rw_remove_const<const _TypeT>
51#define _RWSTD_REMOVE_CONST(T) _RW::__rw_remove_const<T>::type
54template <
class _TypeT>
55struct __rw_remove_volatile
60template <
class _TypeT>
61struct __rw_remove_volatile<volatile _TypeT>
66#define _RWSTD_REMOVE_VOLATILE(T) _RW::__rw_remove_volatile<T>::type
68template <
class _TypeT>
71 typedef typename __rw_remove_const<
72 typename __rw_remove_volatile<_TypeT>::type
76#define _RWSTD_REMOVE_CV(T) _RW::__rw_remove_cv<T>::type
79template <class _TypeT, bool = __rw_is_function<_TypeT>::value
80 || __rw_is_reference<_TypeT>::value>
81struct __rw_add_const_impl
83 typedef _TypeT _C_type;
86template <
class _TypeT>
87struct __rw_add_const_impl<_TypeT,
false>
89 typedef const _TypeT _C_type;
92template <
class _TypeT>
95 typedef typename __rw_add_const_impl<_TypeT>::_C_type type;
98#define _RWSTD_ADD_CONST(T) _RW::__rw_add_const<T>::type
101template <class _TypeT, bool = __rw_is_function<_TypeT>::value
102 || __rw_is_reference<_TypeT>::value>
103struct __rw_add_volatile_impl
105 typedef _TypeT _C_type;
108template <
class _TypeT>
109struct __rw_add_volatile_impl<_TypeT,
false>
111 typedef volatile _TypeT _C_type;
114template <
class _TypeT>
115struct __rw_add_volatile
117 typedef typename __rw_add_volatile_impl<_TypeT>::_C_type type;
120#define _RWSTD_ADD_VOLATILE(T) _RW::__rw_add_volatile<T>::type
123template <
class _TypeT>
128 typename __rw_add_volatile<_TypeT>::type
132#define _RWSTD_ADD_CV(T) _RW::__rw_add_cv<T>::type
#define _RWSTD_NAMESPACE(name)