00001 #ifndef realroot_BASE_TYPE_STRIPQUALIFIERS_H
00002 #define realroot_BASE_TYPE_STRIPQUALIFIERS_H
00003
00004 namespace mmx {
00005
00006 namespace texp
00007 {
00009 template <class X> struct ptr { typedef X * T; };
00010 template <class X> struct ptr<X*> { typedef X * T; };
00011 template <class X> struct ptr<X* const> { typedef X * const T; };
00013 template <class X> struct uptr { typedef X T; };
00014 template <class X> struct uptr<X*> { typedef X T; };
00016 template <class X> struct ref { typedef X & T; };
00017 template <class X> struct ref<X&> { typedef X & T; };
00019 template <class X> struct uref { typedef X T; };
00020 template <class X> struct uref<X&> { typedef X T; };
00022 template <class X> struct cst { typedef const X T; };
00023 template <class X> struct cst<const X> { typedef const X T; };
00025 template <class X> struct ucst { typedef X T; };
00026 template <class X> struct ucst<const X> { typedef X T; };
00028 template <class X> struct ucstref { typedef typename uref< typename ucst<X>::T >::T T; };
00029 };
00030
00031 }
00032
00033 #endif