diff --git a/src/core/type-traits.h b/src/core/type-traits.h index 2fcb83550..58dbb9e3f 100644 --- a/src/core/type-traits.h +++ b/src/core/type-traits.h @@ -114,7 +114,119 @@ private: typedef W1 Arg1Type; typedef W2 Arg2Type; }; - + template + struct PtrToMemberTraits + { + enum {IsPointerToMember = 1}; + enum {nArgs = 3}; + typedef U ReturnType; + typedef W1 Arg1Type; + typedef W2 Arg2Type; + typedef W3 Arg3Type; + }; + template + struct PtrToMemberTraits + { + enum {IsPointerToMember = 1}; + enum {nArgs = 3}; + typedef U ReturnType; + typedef W1 Arg1Type; + typedef W2 Arg2Type; + typedef W3 Arg3Type; + }; + template + struct PtrToMemberTraits + { + enum {IsPointerToMember = 1}; + enum {nArgs = 4}; + typedef U ReturnType; + typedef W1 Arg1Type; + typedef W2 Arg2Type; + typedef W3 Arg3Type; + typedef W4 Arg4Type; + }; + template + struct PtrToMemberTraits + { + enum {IsPointerToMember = 1}; + enum {nArgs = 4}; + typedef U ReturnType; + typedef W1 Arg1Type; + typedef W2 Arg2Type; + typedef W3 Arg3Type; + typedef W4 Arg4Type; + }; + template + struct PtrToMemberTraits + { + enum {IsPointerToMember = 1}; + enum {nArgs = 5}; + typedef U ReturnType; + typedef W1 Arg1Type; + typedef W2 Arg2Type; + typedef W3 Arg3Type; + typedef W4 Arg4Type; + typedef W5 Arg5Type; + }; + template + struct PtrToMemberTraits + { + enum {IsPointerToMember = 1}; + enum {nArgs = 5}; + typedef U ReturnType; + typedef W1 Arg1Type; + typedef W2 Arg2Type; + typedef W3 Arg3Type; + typedef W4 Arg4Type; + typedef W5 Arg5Type; + }; + template + struct PtrToMemberTraits + { + enum {IsPointerToMember = 1}; + enum {nArgs = 6}; + typedef U ReturnType; + typedef W1 Arg1Type; + typedef W2 Arg2Type; + typedef W3 Arg3Type; + typedef W4 Arg4Type; + typedef W5 Arg5Type; + typedef W6 Arg6Type; + }; + template + struct PtrToMemberTraits + { + enum {IsPointerToMember = 1}; + enum {nArgs = 6}; + typedef U ReturnType; + typedef W1 Arg1Type; + typedef W2 Arg2Type; + typedef W3 Arg3Type; + typedef W4 Arg4Type; + typedef W5 Arg5Type; + typedef W6 Arg6Type; + }; + public: typedef typename UnConst::Result NonConstType; typedef typename ReferenceTraits::ReferencedType ReferencedType;