Files Classes Functions Hierarchy
00001 #ifndef TYPEOP_H 00002 #define TYPEOP_H 00003 00040 ; 00041 template< typename T > 00042 class typeop 00043 { 00044 public: 00045 00046 typedef T Targ; 00047 typedef T Tbare; 00048 typedef T const Tconst; 00049 typedef T & Tref; 00050 typedef T & Tbareref; 00051 typedef T const & Tconstref; 00052 typedef T* Tptr; 00053 typedef T* Tbareptr; 00054 typedef T const * Tconstptr; 00055 }; 00056 00057 template< typename T > 00058 class typeop< T & > 00059 { 00060 public: 00061 00062 typedef T & Targ; 00063 typedef T Tbare; 00064 typedef T const Tconst; 00065 typedef T & Tref; 00066 typedef T const & Tconstref; 00067 typedef T* Tptr; 00068 typedef T* Tbareptr; 00069 typedef T const * Tconstptr; 00070 }; 00071 00072 template< typename T > 00073 class typeop< T const > 00074 { 00075 public: 00076 00077 typedef T const Targ; 00078 typedef T Tbare; 00079 typedef T const Tconst; 00080 typedef T & Tref; 00081 typedef T & Tbareref; 00082 typedef T const & Tconstref; 00083 typedef T* Tptr; 00084 typedef T const * Tbareptr; 00085 typedef T const * Tconstptr; 00086 00087 }; 00088 00089 template< typename T > 00090 class typeop< T * > 00091 { 00092 public: 00093 00094 typedef T * Targ; 00095 typedef T Tbare; 00096 typedef T const Tconst; 00097 typedef T & Tref; 00098 typedef T & Tbareref; 00099 typedef T const & Tconstref; 00100 typedef T* Tptr; 00101 typedef T* Tbareptr; 00102 typedef T const * Tconstptr; 00103 }; 00104 00105 template< typename T > 00106 class typeop< T const * > 00107 { 00108 public: 00109 00110 typedef T const * Targ; 00111 typedef T Tbare; 00112 typedef T const Tconst; 00113 typedef T & Tref; 00114 typedef T & Tbareref; 00115 typedef T const & Tconstref; 00116 typedef T* Tptr; 00117 typedef T* Tbareptr; 00118 typedef T const * Tconstptr; 00119 }; 00120 00121 // <TODO> Expand to include void and more pointer types. 00122 // How can a functions return type be extracted? 00123 00124 00125 00126 00127 #endif 00128
1.5.8