00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050 #ifndef LASS_GUARDIAN_OF_INCLUSION_META_IS_MEMBER_H
00051 #define LASS_GUARDIAN_OF_INCLUSION_META_IS_MEMBER_H
00052
00053 #include "meta_common.h"
00054 #include "bool.h"
00055 #include "is_const.h"
00056
00057 namespace lass
00058 {
00059 namespace meta
00060 {
00061
00062
00063
00064 template <typename R> struct IsMember : meta::False {};
00065 template <typename R> struct IsConstMember : meta::False {};
00066
00067 template <typename R, typename C > struct IsMember<R (C::*) ()> : meta::True {};
00068 template <typename R, typename C > struct IsMember<R (C::*) () const > : meta::True {};
00069 template <typename R, typename C > struct IsConstMember<R (C::*) () const > : meta::True {};
00070
00071
00072 template <typename R, typename C, typename P1 > struct IsMember<R (C::*) ( P1 )> : meta::True {};
00073 template <typename R, typename C, typename P1 > struct IsMember<R (C::*) ( P1 ) const > : meta::True {};
00074 template <typename R, typename C, typename P1 > struct IsConstMember<R (C::*) ( P1 ) const > : meta::True {};
00075
00076 template <typename R, typename C, typename P1, typename P2 > struct IsMember<R (C::*) ( P1, P2 )> : meta::True {};
00077 template <typename R, typename C, typename P1, typename P2 > struct IsMember<R (C::*) ( P1, P2 ) const > : meta::True {};
00078 template <typename R, typename C, typename P1, typename P2 > struct IsConstMember<R (C::*) ( P1, P2 ) const > : meta::True {};
00079
00080 template <typename R, typename C, typename P1, typename P2, typename P3 > struct IsMember<R (C::*) ( P1, P2, P3 )> : meta::True {};
00081 template <typename R, typename C, typename P1, typename P2, typename P3 > struct IsMember<R (C::*) ( P1, P2, P3 ) const > : meta::True {};
00082 template <typename R, typename C, typename P1, typename P2, typename P3 > struct IsConstMember<R (C::*) ( P1, P2, P3 ) const > : meta::True {};
00083
00084 template <typename R, typename C, typename P1, typename P2, typename P3, typename P4 > struct IsMember<R (C::*) ( P1, P2, P3, P4 )> : meta::True {};
00085 template <typename R, typename C, typename P1, typename P2, typename P3, typename P4 > struct IsMember<R (C::*) ( P1, P2, P3, P4 ) const > : meta::True {};
00086 template <typename R, typename C, typename P1, typename P2, typename P3, typename P4 > struct IsConstMember<R (C::*) ( P1, P2, P3, P4 ) const > : meta::True {};
00087
00088 template <typename R, typename C, typename P1, typename P2, typename P3, typename P4, typename P5 > struct IsMember<R (C::*) ( P1, P2, P3, P4, P5 )> : meta::True {};
00089 template <typename R, typename C, typename P1, typename P2, typename P3, typename P4, typename P5 > struct IsMember<R (C::*) ( P1, P2, P3, P4, P5 ) const > : meta::True {};
00090 template <typename R, typename C, typename P1, typename P2, typename P3, typename P4, typename P5 > struct IsConstMember<R (C::*) ( P1, P2, P3, P4, P5 ) const > : meta::True {};
00091
00092 template <typename R, typename C, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6 > struct IsMember<R (C::*) ( P1, P2, P3, P4, P5, P6 )> : meta::True {};
00093 template <typename R, typename C, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6 > struct IsMember<R (C::*) ( P1, P2, P3, P4, P5, P6 ) const > : meta::True {};
00094 template <typename R, typename C, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6 > struct IsConstMember<R (C::*) ( P1, P2, P3, P4, P5, P6 ) const > : meta::True {};
00095
00096 template <typename R, typename C, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7 > struct IsMember<R (C::*) ( P1, P2, P3, P4, P5, P6, P7 )> : meta::True {};
00097 template <typename R, typename C, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7 > struct IsMember<R (C::*) ( P1, P2, P3, P4, P5, P6, P7 ) const > : meta::True {};
00098 template <typename R, typename C, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7 > struct IsConstMember<R (C::*) ( P1, P2, P3, P4, P5, P6, P7 ) const > : meta::True {};
00099
00100 template <typename R, typename C, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8 > struct IsMember<R (C::*) ( P1, P2, P3, P4, P5, P6, P7, P8 )> : meta::True {};
00101 template <typename R, typename C, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8 > struct IsMember<R (C::*) ( P1, P2, P3, P4, P5, P6, P7, P8 ) const > : meta::True {};
00102 template <typename R, typename C, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8 > struct IsConstMember<R (C::*) ( P1, P2, P3, P4, P5, P6, P7, P8 ) const > : meta::True {};
00103
00104 template <typename R, typename C, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9 > struct IsMember<R (C::*) ( P1, P2, P3, P4, P5, P6, P7, P8, P9 )> : meta::True {};
00105 template <typename R, typename C, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9 > struct IsMember<R (C::*) ( P1, P2, P3, P4, P5, P6, P7, P8, P9 ) const > : meta::True {};
00106 template <typename R, typename C, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9 > struct IsConstMember<R (C::*) ( P1, P2, P3, P4, P5, P6, P7, P8, P9 ) const > : meta::True {};
00107
00108 template <typename R, typename C, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10 > struct IsMember<R (C::*) ( P1, P2, P3, P4, P5, P6, P7, P8, P9, P10 )> : meta::True {};
00109 template <typename R, typename C, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10 > struct IsMember<R (C::*) ( P1, P2, P3, P4, P5, P6, P7, P8, P9, P10 ) const > : meta::True {};
00110 template <typename R, typename C, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10 > struct IsConstMember<R (C::*) ( P1, P2, P3, P4, P5, P6, P7, P8, P9, P10 ) const > : meta::True {};
00111
00112 template <typename R, typename C, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10, typename P11 > struct IsMember<R (C::*) ( P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11 )> : meta::True {};
00113 template <typename R, typename C, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10, typename P11 > struct IsMember<R (C::*) ( P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11 ) const > : meta::True {};
00114 template <typename R, typename C, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10, typename P11 > struct IsConstMember<R (C::*) ( P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11 ) const > : meta::True {};
00115
00116 template <typename R, typename C, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10, typename P11, typename P12 > struct IsMember<R (C::*) ( P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12 )> : meta::True {};
00117 template <typename R, typename C, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10, typename P11, typename P12 > struct IsMember<R (C::*) ( P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12 ) const > : meta::True {};
00118 template <typename R, typename C, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10, typename P11, typename P12 > struct IsConstMember<R (C::*) ( P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12 ) const > : meta::True {};
00119
00120 template <typename R, typename C, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10, typename P11, typename P12, typename P13 > struct IsMember<R (C::*) ( P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13 )> : meta::True {};
00121 template <typename R, typename C, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10, typename P11, typename P12, typename P13 > struct IsMember<R (C::*) ( P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13 ) const > : meta::True {};
00122 template <typename R, typename C, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10, typename P11, typename P12, typename P13 > struct IsConstMember<R (C::*) ( P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13 ) const > : meta::True {};
00123
00124 template <typename R, typename C, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10, typename P11, typename P12, typename P13, typename P14 > struct IsMember<R (C::*) ( P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14 )> : meta::True {};
00125 template <typename R, typename C, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10, typename P11, typename P12, typename P13, typename P14 > struct IsMember<R (C::*) ( P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14 ) const > : meta::True {};
00126 template <typename R, typename C, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10, typename P11, typename P12, typename P13, typename P14 > struct IsConstMember<R (C::*) ( P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14 ) const > : meta::True {};
00127
00128 template <typename R, typename C, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10, typename P11, typename P12, typename P13, typename P14, typename P15 > struct IsMember<R (C::*) ( P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15 )> : meta::True {};
00129 template <typename R, typename C, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10, typename P11, typename P12, typename P13, typename P14, typename P15 > struct IsMember<R (C::*) ( P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15 ) const > : meta::True {};
00130 template <typename R, typename C, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10, typename P11, typename P12, typename P13, typename P14, typename P15 > struct IsConstMember<R (C::*) ( P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15 ) const > : meta::True {};
00131
00132
00133
00134
00135 template <typename R, typename C > inline bool isMember(R (C::*)() ) { return true; }
00136 template <typename R, typename C > inline bool isMember(R (C::*)() const ) { return true; }
00137 template <typename R, typename C > inline bool isConstMember(R (C::*)() ) { return false; }
00138 template <typename R, typename C > inline bool isConstMember(R (C::*)() const ) { return true; }
00139
00140
00141
00142 template <typename R, typename C > inline bool isPseudoConstMember(R (C::*)() ) { return false; }
00143 template <typename R, typename C > inline bool isPseudoConstMember(R (C::*)() const ) { return true; }
00144 template <typename R, typename C > inline bool isPseudoConstMember(R (*)(C) ) { return IsConst<C>::value; }
00145
00146
00147
00148 template <typename R, typename C, typename P1 > inline bool isMember(R (C::*)( P1 ) ) { return true; }
00149 template <typename R, typename C, typename P1 > inline bool isMember(R (C::*)( P1 ) const ) { return true; }
00150 template <typename R, typename C, typename P1 > inline bool isConstMember(R (C::*)( P1 ) ) { return false; }
00151 template <typename R, typename C, typename P1 > inline bool isConstMember(R (C::*)( P1 ) const ) { return true; }
00152 template <typename R, typename C, typename P1 > inline bool isPseudoConstMember(R (C::*)( P1 ) ) { return false; }
00153 template <typename R, typename C, typename P1 > inline bool isPseudoConstMember(R (C::*)( P1 ) const ) { return true; }
00154 template <typename R, typename C, typename P1 > inline bool isPseudoConstMember(R (*)( C, P1 ) ) { return IsConst<C>::value; }
00155
00156 template <typename R, typename C, typename P1, typename P2 > inline bool isMember(R (C::*)( P1, P2 ) ) { return true; }
00157 template <typename R, typename C, typename P1, typename P2 > inline bool isMember(R (C::*)( P1, P2 ) const ) { return true; }
00158 template <typename R, typename C, typename P1, typename P2 > inline bool isConstMember(R (C::*)( P1, P2 ) ) { return false; }
00159 template <typename R, typename C, typename P1, typename P2 > inline bool isConstMember(R (C::*)( P1, P2 ) const ) { return true; }
00160 template <typename R, typename C, typename P1, typename P2 > inline bool isPseudoConstMember(R (C::*)( P1, P2 ) ) { return false; }
00161 template <typename R, typename C, typename P1, typename P2 > inline bool isPseudoConstMember(R (C::*)( P1, P2 ) const ) { return true; }
00162 template <typename R, typename C, typename P1, typename P2 > inline bool isPseudoConstMember(R (*)( C, P1, P2 ) ) { return IsConst<C>::value; }
00163
00164 template <typename R, typename C, typename P1, typename P2, typename P3 > inline bool isMember(R (C::*)( P1, P2, P3 ) ) { return true; }
00165 template <typename R, typename C, typename P1, typename P2, typename P3 > inline bool isMember(R (C::*)( P1, P2, P3 ) const ) { return true; }
00166 template <typename R, typename C, typename P1, typename P2, typename P3 > inline bool isConstMember(R (C::*)( P1, P2, P3 ) ) { return false; }
00167 template <typename R, typename C, typename P1, typename P2, typename P3 > inline bool isConstMember(R (C::*)( P1, P2, P3 ) const ) { return true; }
00168 template <typename R, typename C, typename P1, typename P2, typename P3 > inline bool isPseudoConstMember(R (C::*)( P1, P2, P3 ) ) { return false; }
00169 template <typename R, typename C, typename P1, typename P2, typename P3 > inline bool isPseudoConstMember(R (C::*)( P1, P2, P3 ) const ) { return true; }
00170 template <typename R, typename C, typename P1, typename P2, typename P3 > inline bool isPseudoConstMember(R (*)( C, P1, P2, P3 ) ) { return IsConst<C>::value; }
00171
00172 template <typename R, typename C, typename P1, typename P2, typename P3, typename P4 > inline bool isMember(R (C::*)( P1, P2, P3, P4 ) ) { return true; }
00173 template <typename R, typename C, typename P1, typename P2, typename P3, typename P4 > inline bool isMember(R (C::*)( P1, P2, P3, P4 ) const ) { return true; }
00174 template <typename R, typename C, typename P1, typename P2, typename P3, typename P4 > inline bool isConstMember(R (C::*)( P1, P2, P3, P4 ) ) { return false; }
00175 template <typename R, typename C, typename P1, typename P2, typename P3, typename P4 > inline bool isConstMember(R (C::*)( P1, P2, P3, P4 ) const ) { return true; }
00176 template <typename R, typename C, typename P1, typename P2, typename P3, typename P4 > inline bool isPseudoConstMember(R (C::*)( P1, P2, P3, P4 ) ) { return false; }
00177 template <typename R, typename C, typename P1, typename P2, typename P3, typename P4 > inline bool isPseudoConstMember(R (C::*)( P1, P2, P3, P4 ) const ) { return true; }
00178 template <typename R, typename C, typename P1, typename P2, typename P3, typename P4 > inline bool isPseudoConstMember(R (*)( C, P1, P2, P3, P4 ) ) { return IsConst<C>::value; }
00179
00180 template <typename R, typename C, typename P1, typename P2, typename P3, typename P4, typename P5 > inline bool isMember(R (C::*)( P1, P2, P3, P4, P5 ) ) { return true; }
00181 template <typename R, typename C, typename P1, typename P2, typename P3, typename P4, typename P5 > inline bool isMember(R (C::*)( P1, P2, P3, P4, P5 ) const ) { return true; }
00182 template <typename R, typename C, typename P1, typename P2, typename P3, typename P4, typename P5 > inline bool isConstMember(R (C::*)( P1, P2, P3, P4, P5 ) ) { return false; }
00183 template <typename R, typename C, typename P1, typename P2, typename P3, typename P4, typename P5 > inline bool isConstMember(R (C::*)( P1, P2, P3, P4, P5 ) const ) { return true; }
00184 template <typename R, typename C, typename P1, typename P2, typename P3, typename P4, typename P5 > inline bool isPseudoConstMember(R (C::*)( P1, P2, P3, P4, P5 ) ) { return false; }
00185 template <typename R, typename C, typename P1, typename P2, typename P3, typename P4, typename P5 > inline bool isPseudoConstMember(R (C::*)( P1, P2, P3, P4, P5 ) const ) { return true; }
00186 template <typename R, typename C, typename P1, typename P2, typename P3, typename P4, typename P5 > inline bool isPseudoConstMember(R (*)( C, P1, P2, P3, P4, P5 ) ) { return IsConst<C>::value; }
00187
00188 template <typename R, typename C, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6 > inline bool isMember(R (C::*)( P1, P2, P3, P4, P5, P6 ) ) { return true; }
00189 template <typename R, typename C, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6 > inline bool isMember(R (C::*)( P1, P2, P3, P4, P5, P6 ) const ) { return true; }
00190 template <typename R, typename C, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6 > inline bool isConstMember(R (C::*)( P1, P2, P3, P4, P5, P6 ) ) { return false; }
00191 template <typename R, typename C, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6 > inline bool isConstMember(R (C::*)( P1, P2, P3, P4, P5, P6 ) const ) { return true; }
00192 template <typename R, typename C, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6 > inline bool isPseudoConstMember(R (C::*)( P1, P2, P3, P4, P5, P6 ) ) { return false; }
00193 template <typename R, typename C, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6 > inline bool isPseudoConstMember(R (C::*)( P1, P2, P3, P4, P5, P6 ) const ) { return true; }
00194 template <typename R, typename C, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6 > inline bool isPseudoConstMember(R (*)( C, P1, P2, P3, P4, P5, P6 ) ) { return IsConst<C>::value; }
00195
00196 template <typename R, typename C, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7 > inline bool isMember(R (C::*)( P1, P2, P3, P4, P5, P6, P7 ) ) { return true; }
00197 template <typename R, typename C, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7 > inline bool isMember(R (C::*)( P1, P2, P3, P4, P5, P6, P7 ) const ) { return true; }
00198 template <typename R, typename C, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7 > inline bool isConstMember(R (C::*)( P1, P2, P3, P4, P5, P6, P7 ) ) { return false; }
00199 template <typename R, typename C, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7 > inline bool isConstMember(R (C::*)( P1, P2, P3, P4, P5, P6, P7 ) const ) { return true; }
00200 template <typename R, typename C, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7 > inline bool isPseudoConstMember(R (C::*)( P1, P2, P3, P4, P5, P6, P7 ) ) { return false; }
00201 template <typename R, typename C, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7 > inline bool isPseudoConstMember(R (C::*)( P1, P2, P3, P4, P5, P6, P7 ) const ) { return true; }
00202 template <typename R, typename C, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7 > inline bool isPseudoConstMember(R (*)( C, P1, P2, P3, P4, P5, P6, P7 ) ) { return IsConst<C>::value; }
00203
00204 template <typename R, typename C, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8 > inline bool isMember(R (C::*)( P1, P2, P3, P4, P5, P6, P7, P8 ) ) { return true; }
00205 template <typename R, typename C, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8 > inline bool isMember(R (C::*)( P1, P2, P3, P4, P5, P6, P7, P8 ) const ) { return true; }
00206 template <typename R, typename C, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8 > inline bool isConstMember(R (C::*)( P1, P2, P3, P4, P5, P6, P7, P8 ) ) { return false; }
00207 template <typename R, typename C, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8 > inline bool isConstMember(R (C::*)( P1, P2, P3, P4, P5, P6, P7, P8 ) const ) { return true; }
00208 template <typename R, typename C, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8 > inline bool isPseudoConstMember(R (C::*)( P1, P2, P3, P4, P5, P6, P7, P8 ) ) { return false; }
00209 template <typename R, typename C, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8 > inline bool isPseudoConstMember(R (C::*)( P1, P2, P3, P4, P5, P6, P7, P8 ) const ) { return true; }
00210 template <typename R, typename C, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8 > inline bool isPseudoConstMember(R (*)( C, P1, P2, P3, P4, P5, P6, P7, P8 ) ) { return IsConst<C>::value; }
00211
00212 template <typename R, typename C, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9 > inline bool isMember(R (C::*)( P1, P2, P3, P4, P5, P6, P7, P8, P9 ) ) { return true; }
00213 template <typename R, typename C, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9 > inline bool isMember(R (C::*)( P1, P2, P3, P4, P5, P6, P7, P8, P9 ) const ) { return true; }
00214 template <typename R, typename C, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9 > inline bool isConstMember(R (C::*)( P1, P2, P3, P4, P5, P6, P7, P8, P9 ) ) { return false; }
00215 template <typename R, typename C, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9 > inline bool isConstMember(R (C::*)( P1, P2, P3, P4, P5, P6, P7, P8, P9 ) const ) { return true; }
00216 template <typename R, typename C, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9 > inline bool isPseudoConstMember(R (C::*)( P1, P2, P3, P4, P5, P6, P7, P8, P9 ) ) { return false; }
00217 template <typename R, typename C, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9 > inline bool isPseudoConstMember(R (C::*)( P1, P2, P3, P4, P5, P6, P7, P8, P9 ) const ) { return true; }
00218 template <typename R, typename C, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9 > inline bool isPseudoConstMember(R (*)( C, P1, P2, P3, P4, P5, P6, P7, P8, P9 ) ) { return IsConst<C>::value; }
00219
00220 template <typename R, typename C, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10 > inline bool isMember(R (C::*)( P1, P2, P3, P4, P5, P6, P7, P8, P9, P10 ) ) { return true; }
00221 template <typename R, typename C, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10 > inline bool isMember(R (C::*)( P1, P2, P3, P4, P5, P6, P7, P8, P9, P10 ) const ) { return true; }
00222 template <typename R, typename C, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10 > inline bool isConstMember(R (C::*)( P1, P2, P3, P4, P5, P6, P7, P8, P9, P10 ) ) { return false; }
00223 template <typename R, typename C, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10 > inline bool isConstMember(R (C::*)( P1, P2, P3, P4, P5, P6, P7, P8, P9, P10 ) const ) { return true; }
00224 template <typename R, typename C, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10 > inline bool isPseudoConstMember(R (C::*)( P1, P2, P3, P4, P5, P6, P7, P8, P9, P10 ) ) { return false; }
00225 template <typename R, typename C, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10 > inline bool isPseudoConstMember(R (C::*)( P1, P2, P3, P4, P5, P6, P7, P8, P9, P10 ) const ) { return true; }
00226 template <typename R, typename C, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10 > inline bool isPseudoConstMember(R (*)( C, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10 ) ) { return IsConst<C>::value; }
00227
00228 template <typename R, typename C, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10, typename P11 > inline bool isMember(R (C::*)( P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11 ) ) { return true; }
00229 template <typename R, typename C, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10, typename P11 > inline bool isMember(R (C::*)( P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11 ) const ) { return true; }
00230 template <typename R, typename C, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10, typename P11 > inline bool isConstMember(R (C::*)( P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11 ) ) { return false; }
00231 template <typename R, typename C, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10, typename P11 > inline bool isConstMember(R (C::*)( P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11 ) const ) { return true; }
00232 template <typename R, typename C, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10, typename P11 > inline bool isPseudoConstMember(R (C::*)( P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11 ) ) { return false; }
00233 template <typename R, typename C, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10, typename P11 > inline bool isPseudoConstMember(R (C::*)( P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11 ) const ) { return true; }
00234 template <typename R, typename C, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10, typename P11 > inline bool isPseudoConstMember(R (*)( C, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11 ) ) { return IsConst<C>::value; }
00235
00236 template <typename R, typename C, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10, typename P11, typename P12 > inline bool isMember(R (C::*)( P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12 ) ) { return true; }
00237 template <typename R, typename C, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10, typename P11, typename P12 > inline bool isMember(R (C::*)( P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12 ) const ) { return true; }
00238 template <typename R, typename C, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10, typename P11, typename P12 > inline bool isConstMember(R (C::*)( P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12 ) ) { return false; }
00239 template <typename R, typename C, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10, typename P11, typename P12 > inline bool isConstMember(R (C::*)( P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12 ) const ) { return true; }
00240 template <typename R, typename C, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10, typename P11, typename P12 > inline bool isPseudoConstMember(R (C::*)( P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12 ) ) { return false; }
00241 template <typename R, typename C, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10, typename P11, typename P12 > inline bool isPseudoConstMember(R (C::*)( P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12 ) const ) { return true; }
00242 template <typename R, typename C, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10, typename P11, typename P12 > inline bool isPseudoConstMember(R (*)( C, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12 ) ) { return IsConst<C>::value; }
00243
00244 template <typename R, typename C, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10, typename P11, typename P12, typename P13 > inline bool isMember(R (C::*)( P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13 ) ) { return true; }
00245 template <typename R, typename C, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10, typename P11, typename P12, typename P13 > inline bool isMember(R (C::*)( P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13 ) const ) { return true; }
00246 template <typename R, typename C, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10, typename P11, typename P12, typename P13 > inline bool isConstMember(R (C::*)( P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13 ) ) { return false; }
00247 template <typename R, typename C, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10, typename P11, typename P12, typename P13 > inline bool isConstMember(R (C::*)( P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13 ) const ) { return true; }
00248 template <typename R, typename C, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10, typename P11, typename P12, typename P13 > inline bool isPseudoConstMember(R (C::*)( P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13 ) ) { return false; }
00249 template <typename R, typename C, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10, typename P11, typename P12, typename P13 > inline bool isPseudoConstMember(R (C::*)( P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13 ) const ) { return true; }
00250 template <typename R, typename C, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10, typename P11, typename P12, typename P13 > inline bool isPseudoConstMember(R (*)( C, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13 ) ) { return IsConst<C>::value; }
00251
00252 template <typename R, typename C, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10, typename P11, typename P12, typename P13, typename P14 > inline bool isMember(R (C::*)( P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14 ) ) { return true; }
00253 template <typename R, typename C, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10, typename P11, typename P12, typename P13, typename P14 > inline bool isMember(R (C::*)( P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14 ) const ) { return true; }
00254 template <typename R, typename C, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10, typename P11, typename P12, typename P13, typename P14 > inline bool isConstMember(R (C::*)( P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14 ) ) { return false; }
00255 template <typename R, typename C, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10, typename P11, typename P12, typename P13, typename P14 > inline bool isConstMember(R (C::*)( P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14 ) const ) { return true; }
00256 template <typename R, typename C, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10, typename P11, typename P12, typename P13, typename P14 > inline bool isPseudoConstMember(R (C::*)( P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14 ) ) { return false; }
00257 template <typename R, typename C, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10, typename P11, typename P12, typename P13, typename P14 > inline bool isPseudoConstMember(R (C::*)( P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14 ) const ) { return true; }
00258 template <typename R, typename C, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10, typename P11, typename P12, typename P13, typename P14 > inline bool isPseudoConstMember(R (*)( C, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14 ) ) { return IsConst<C>::value; }
00259
00260 template <typename R, typename C, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10, typename P11, typename P12, typename P13, typename P14, typename P15 > inline bool isMember(R (C::*)( P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15 ) ) { return true; }
00261 template <typename R, typename C, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10, typename P11, typename P12, typename P13, typename P14, typename P15 > inline bool isMember(R (C::*)( P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15 ) const ) { return true; }
00262 template <typename R, typename C, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10, typename P11, typename P12, typename P13, typename P14, typename P15 > inline bool isConstMember(R (C::*)( P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15 ) ) { return false; }
00263 template <typename R, typename C, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10, typename P11, typename P12, typename P13, typename P14, typename P15 > inline bool isConstMember(R (C::*)( P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15 ) const ) { return true; }
00264 template <typename R, typename C, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10, typename P11, typename P12, typename P13, typename P14, typename P15 > inline bool isPseudoConstMember(R (C::*)( P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15 ) ) { return false; }
00265 template <typename R, typename C, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10, typename P11, typename P12, typename P13, typename P14, typename P15 > inline bool isPseudoConstMember(R (C::*)( P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15 ) const ) { return true; }
00266 template <typename R, typename C, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10, typename P11, typename P12, typename P13, typename P14, typename P15 > inline bool isPseudoConstMember(R (*)( C, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15 ) ) { return IsConst<C>::value; }
00267
00268
00269
00270 }
00271 }
00272
00273 #endif
00274
00275