00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016 #ifndef INSTIGATE_SCRIPTING_GENERIC_UTILITIES
00017 #define INSTIGATE_SCRIPTING_GENERIC_UTILITIES
00018
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041 namespace instigate {
00042
00043 namespace generic {
00044 template <typename T>
00045 class remove_reference;
00046
00047 template <typename T>
00048 class remove_reference<T&>;
00049
00050 template <typename T>
00051 class remove_const;
00052
00053 template <typename T>
00054 class remove_const<const T>;
00055
00056 template <typename T>
00057 class add_const_reference;
00058
00059 }
00060
00061 }
00062
00067 template <typename T>
00068 class instigate::generic::remove_reference
00069 {
00070 public:
00071 typedef T type;
00072
00073 };
00074
00076
00077 template <typename T>
00078 class instigate::generic::remove_reference<T&>
00079 {
00080 public:
00081 typedef T type;
00082 };
00083
00094 template <typename T>
00095 class instigate::generic::remove_const
00096 {
00097 public:
00098 typedef T type;
00099 };
00100
00102
00103 template <typename T>
00104 class instigate::generic::remove_const<const T>
00105 {
00106 public:
00107 typedef T type;
00108 };
00109
00114 template <typename T>
00115 class instigate::generic::add_const_reference
00116 {
00117 public:
00118 typedef const T& type;
00119
00120 };
00121
00122
00123
00124 #endif // INSTIGATE_SCRIPTING_GENERIC_UTILITIES
00125