From 97f71e0cb32285eaa0afacc9e084e36b143adc5b Mon Sep 17 00:00:00 2001 From: rmiller Date: Mon, 22 Jul 2019 11:30:13 -0500 Subject: [PATCH] Issue 123: Revised /clr conditionals to handle __stdcall and __cdecl properly --- .../type_traits/detail/is_function_cxx_11.hpp | 201 +++++++++++---- .../is_member_function_pointer_cxx_11.hpp | 240 +++++++++++------- 2 files changed, 296 insertions(+), 145 deletions(-) diff --git a/include/boost/type_traits/detail/is_function_cxx_11.hpp b/include/boost/type_traits/detail/is_function_cxx_11.hpp index cea6adc..2dbe1de 100644 --- a/include/boost/type_traits/detail/is_function_cxx_11.hpp +++ b/include/boost/type_traits/detail/is_function_cxx_11.hpp @@ -32,78 +32,108 @@ namespace boost { #define BOOST_TT_DEF_CALL #endif +#if !defined(_M_CEE_SAFE) && !defined(_M_CEE_PURE) template struct is_function : public true_type {}; +#endif template struct is_function : public true_type {}; // const qualified: + +#if !defined(_M_CEE_SAFE) && !defined(_M_CEE_PURE) template struct is_function : public true_type {}; +#endif template struct is_function : public true_type {}; // volatile: + +#if !defined(_M_CEE_SAFE) && !defined(_M_CEE_PURE) template struct is_function : public true_type {}; +#endif template struct is_function : public true_type {}; // const volatile +#if !defined(_M_CEE_SAFE) && !defined(_M_CEE_PURE) template struct is_function : public true_type {}; +#endif template struct is_function : public true_type {}; // Reference qualified: +#if !defined(_M_CEE_SAFE) && !defined(_M_CEE_PURE) template struct is_function : public true_type {}; +#endif template struct is_function : public true_type {}; // const qualified: +#if !defined(_M_CEE_SAFE) && !defined(_M_CEE_PURE) template struct is_function : public true_type {}; +#endif template struct is_function : public true_type {}; // volatile: +#if !defined(_M_CEE_SAFE) && !defined(_M_CEE_PURE) template struct is_function : public true_type {}; +#endif template struct is_function : public true_type {}; // const volatile +#if !defined(_M_CEE_SAFE) && !defined(_M_CEE_PURE) template struct is_function : public true_type {}; +#endif template struct is_function : public true_type {}; // rvalue reference qualified: +#if !defined(_M_CEE_SAFE) && !defined(_M_CEE_PURE) template struct is_function : public true_type {}; +#endif template struct is_function : public true_type {}; // const qualified: +#if !defined(_M_CEE_SAFE) && !defined(_M_CEE_PURE) template struct is_function : public true_type {}; +#endif template struct is_function : public true_type {}; // volatile: +#if !defined(_M_CEE_SAFE) && !defined(_M_CEE_PURE) template struct is_function : public true_type {}; +#endif template struct is_function : public true_type {}; // const volatile +#if !defined(_M_CEE_SAFE) && !defined(_M_CEE_PURE) template struct is_function : public true_type {}; +#endif template struct is_function : public true_type {}; + #if defined(_MSC_VER) && !defined(_M_ARM) && !defined(_M_ARM64) + +#if !defined(_M_X64) && !defined(_M_CEE_SAFE) && !defined(_M_CEE_PURE) + template + struct is_function : public true_type {}; +#endif #ifdef _MANAGED template struct is_function : public true_type {}; #else -#ifndef _M_AMD64 - template - struct is_function : public true_type {}; +#ifndef _M_X64 template struct is_function : public true_type {}; #endif @@ -113,13 +143,16 @@ namespace boost { #endif #endif // const: + +#if !defined(_M_X64) && !defined(_M_CEE_SAFE) && !defined(_M_CEE_PURE) + template + struct is_function : public true_type {}; +#endif #ifdef _MANAGED template struct is_function : public true_type {}; #else #ifndef _M_AMD64 - template - struct is_function : public true_type {}; template struct is_function : public true_type {}; #endif @@ -129,13 +162,15 @@ namespace boost { #endif #endif // volatile: +#if !defined(_M_X64) && !defined(_M_CEE_SAFE) && !defined(_M_CEE_PURE) + template + struct is_function : public true_type {}; +#endif #ifdef _MANAGED template struct is_function : public true_type {}; #else #ifndef _M_AMD64 - template - struct is_function : public true_type {}; template struct is_function : public true_type {}; #endif @@ -145,13 +180,15 @@ namespace boost { #endif #endif // const volatile: +#if !defined(_M_X64) && !defined(_M_CEE_SAFE) && !defined(_M_CEE_PURE) + template + struct is_function : public true_type {}; +#endif #ifdef _MANAGED template struct is_function : public true_type {}; #else #ifndef _M_AMD64 - template - struct is_function : public true_type {}; template struct is_function : public true_type {}; #endif @@ -162,13 +199,15 @@ namespace boost { #endif // reference qualified: +#if !defined(_M_X64) && !defined(_M_CEE_SAFE) && !defined(_M_CEE_PURE) + template + struct is_function : public true_type {}; +#endif #ifdef _MANAGED template struct is_function : public true_type {}; #else #ifndef _M_AMD64 - template - struct is_function : public true_type {}; template struct is_function : public true_type {}; #endif @@ -178,13 +217,15 @@ namespace boost { #endif #endif // const: +#if !defined(_M_X64) && !defined(_M_CEE_SAFE) && !defined(_M_CEE_PURE) + template + struct is_function : public true_type {}; +#endif #ifdef _MANAGED template struct is_function : public true_type {}; #else #ifndef _M_AMD64 - template - struct is_function : public true_type {}; template struct is_function : public true_type {}; #endif @@ -194,13 +235,15 @@ namespace boost { #endif #endif // volatile: +#if !defined(_M_X64) && !defined(_M_CEE_SAFE) && !defined(_M_CEE_PURE) + template + struct is_function : public true_type {}; +#endif #ifdef _MANAGED template struct is_function : public true_type {}; #else #ifndef _M_AMD64 - template - struct is_function : public true_type {}; template struct is_function : public true_type {}; #endif @@ -210,13 +253,15 @@ namespace boost { #endif #endif // const volatile: +#if !defined(_M_X64) && !defined(_M_CEE_SAFE) && !defined(_M_CEE_PURE) + template + struct is_function : public true_type {}; +#endif #ifdef _MANAGED template struct is_function : public true_type {}; #else #ifndef _M_AMD64 - template - struct is_function : public true_type {}; template struct is_function : public true_type {}; #endif @@ -227,13 +272,15 @@ namespace boost { #endif // rvalue reference qualified: +#if !defined(_M_X64) && !defined(_M_CEE_SAFE) && !defined(_M_CEE_PURE) + template + struct is_function : public true_type {}; +#endif #ifdef _MANAGED template struct is_function : public true_type {}; #else #ifndef _M_AMD64 - template - struct is_function : public true_type {}; template struct is_function : public true_type {}; #endif @@ -243,13 +290,15 @@ namespace boost { #endif #endif // const: +#if !defined(_M_X64) && !defined(_M_CEE_SAFE) && !defined(_M_CEE_PURE) + template + struct is_function : public true_type {}; +#endif #ifdef _MANAGED template struct is_function : public true_type {}; #else #ifndef _M_AMD64 - template - struct is_function : public true_type {}; template struct is_function : public true_type {}; #endif @@ -259,13 +308,15 @@ namespace boost { #endif #endif // volatile: +#if !defined(_M_X64) && !defined(_M_CEE_SAFE) && !defined(_M_CEE_PURE) + template + struct is_function : public true_type {}; +#endif #ifdef _MANAGED template struct is_function : public true_type {}; #else #ifndef _M_AMD64 - template - struct is_function : public true_type {}; template struct is_function : public true_type {}; #endif @@ -275,13 +326,15 @@ namespace boost { #endif #endif // const volatile: +#if !defined(_M_X64) && !defined(_M_CEE_SAFE) && !defined(_M_CEE_PURE) + template + struct is_function : public true_type {}; +#endif #ifdef _MANAGED template struct is_function : public true_type {}; #else #ifndef _M_AMD64 - template - struct is_function : public true_type {}; template struct is_function : public true_type {}; #endif @@ -300,78 +353,106 @@ namespace boost { #undef BOOST_TT_NOEXCEPT_DECL #define BOOST_TT_NOEXCEPT_DECL noexcept +#if !defined(_M_CEE_SAFE) && !defined(_M_CEE_PURE) template struct is_function : public true_type {}; +#endif template struct is_function : public true_type {}; // const qualified: +#if !defined(_M_CEE_SAFE) && !defined(_M_CEE_PURE) template struct is_function : public true_type {}; +#endif template struct is_function : public true_type {}; // volatile: +#if !defined(_M_CEE_SAFE) && !defined(_M_CEE_PURE) template struct is_function : public true_type {}; +#endif template struct is_function : public true_type {}; // const volatile +#if !defined(_M_CEE_SAFE) && !defined(_M_CEE_PURE) template struct is_function : public true_type {}; +#endif template struct is_function : public true_type {}; // Reference qualified: +#if !defined(_M_CEE_SAFE) && !defined(_M_CEE_PURE) template struct is_function : public true_type {}; +#endif template struct is_function : public true_type {}; // const qualified: +#if !defined(_M_CEE_SAFE) && !defined(_M_CEE_PURE) template struct is_function : public true_type {}; +#endif template struct is_function : public true_type {}; // volatile: +#if !defined(_M_CEE_SAFE) && !defined(_M_CEE_PURE) template struct is_function : public true_type {}; +#endif template struct is_function : public true_type {}; // const volatile +#if !defined(_M_CEE_SAFE) && !defined(_M_CEE_PURE) template struct is_function : public true_type {}; +#endif template struct is_function : public true_type {}; // rvalue reference qualified: +#if !defined(_M_CEE_SAFE) && !defined(_M_CEE_PURE) template struct is_function : public true_type {}; +#endif template struct is_function : public true_type {}; // const qualified: +#if !defined(_M_CEE_SAFE) && !defined(_M_CEE_PURE) template struct is_function : public true_type {}; +#endif template struct is_function : public true_type {}; // volatile: +#if !defined(_M_CEE_SAFE) && !defined(_M_CEE_PURE) template struct is_function : public true_type {}; +#endif template struct is_function : public true_type {}; // const volatile +#if !defined(_M_CEE_SAFE) && !defined(_M_CEE_PURE) template struct is_function : public true_type {}; +#endif template struct is_function : public true_type {}; + #if defined(_MSC_VER) && !defined(_M_ARM) && !defined(_M_ARM64) + +#if !defined(_M_X64) && !defined(_M_CEE_SAFE) && !defined(_M_CEE_PURE) + template + struct is_function : public true_type {}; +#endif #ifdef _MANAGED template struct is_function : public true_type {}; #else #ifndef _M_AMD64 - template - struct is_function : public true_type {}; template struct is_function : public true_type {}; #endif @@ -381,13 +462,15 @@ namespace boost { #endif #endif // const: +#if !defined(_M_X64) && !defined(_M_CEE_SAFE) && !defined(_M_CEE_PURE) + template + struct is_function : public true_type {}; +#endif #ifdef _MANAGED template struct is_function : public true_type {}; #else #ifndef _M_AMD64 - template - struct is_function : public true_type {}; template struct is_function : public true_type {}; #endif @@ -397,13 +480,15 @@ namespace boost { #endif #endif // volatile: +#if !defined(_M_X64) && !defined(_M_CEE_SAFE) && !defined(_M_CEE_PURE) + template + struct is_function : public true_type {}; +#endif #ifdef _MANAGED template struct is_function : public true_type {}; #else #ifndef _M_AMD64 - template - struct is_function : public true_type {}; template struct is_function : public true_type {}; #endif @@ -413,13 +498,15 @@ namespace boost { #endif #endif // const volatile: +#if !defined(_M_X64) && !defined(_M_CEE_SAFE) && !defined(_M_CEE_PURE) + template + struct is_function : public true_type {}; +#endif #ifdef _MANAGED template struct is_function : public true_type {}; #else #ifndef _M_AMD64 - template - struct is_function : public true_type {}; template struct is_function : public true_type {}; #endif @@ -430,13 +517,15 @@ namespace boost { #endif // reference qualified: +#if !defined(_M_X64) && !defined(_M_CEE_SAFE) && !defined(_M_CEE_PURE) + template + struct is_function : public true_type {}; +#endif #ifdef _MANAGED template struct is_function : public true_type {}; #else #ifndef _M_AMD64 - template - struct is_function : public true_type {}; template struct is_function : public true_type {}; #endif @@ -446,13 +535,15 @@ namespace boost { #endif #endif // const: +#if !defined(_M_X64) && !defined(_M_CEE_SAFE) && !defined(_M_CEE_PURE) + template + struct is_function : public true_type {}; +#endif #ifdef _MANAGED template struct is_function : public true_type {}; #else #ifndef _M_AMD64 - template - struct is_function : public true_type {}; template struct is_function : public true_type {}; #endif @@ -462,13 +553,15 @@ namespace boost { #endif #endif // volatile: +#if !defined(_M_X64) && !defined(_M_CEE_SAFE) && !defined(_M_CEE_PURE) + template + struct is_function : public true_type {}; +#endif #ifdef _MANAGED template struct is_function : public true_type {}; #else #ifndef _M_AMD64 - template - struct is_function : public true_type {}; template struct is_function : public true_type {}; #endif @@ -478,13 +571,15 @@ namespace boost { #endif #endif // const volatile: +#if !defined(_M_X64) && !defined(_M_CEE_SAFE) && !defined(_M_CEE_PURE) + template + struct is_function : public true_type {}; +#endif #ifdef _MANAGED template struct is_function : public true_type {}; #else #ifndef _M_AMD64 - template - struct is_function : public true_type {}; template struct is_function : public true_type {}; #endif @@ -495,13 +590,15 @@ namespace boost { #endif // rvalue reference qualified: +#if !defined(_M_X64) && !defined(_M_CEE_SAFE) && !defined(_M_CEE_PURE) + template + struct is_function : public true_type {}; +#endif #ifdef _MANAGED template struct is_function : public true_type {}; #else #ifndef _M_AMD64 - template - struct is_function : public true_type {}; template struct is_function : public true_type {}; #endif @@ -511,13 +608,15 @@ namespace boost { #endif #endif // const: +#if !defined(_M_X64) && !defined(_M_CEE_SAFE) && !defined(_M_CEE_PURE) + template + struct is_function : public true_type {}; +#endif #ifdef _MANAGED template struct is_function : public true_type {}; #else #ifndef _M_AMD64 - template - struct is_function : public true_type {}; template struct is_function : public true_type {}; #endif @@ -527,13 +626,15 @@ namespace boost { #endif #endif // volatile: +#if !defined(_M_X64) && !defined(_M_CEE_SAFE) && !defined(_M_CEE_PURE) + template + struct is_function : public true_type {}; +#endif #ifdef _MANAGED template struct is_function : public true_type {}; #else #ifndef _M_AMD64 - template - struct is_function : public true_type {}; template struct is_function : public true_type {}; #endif @@ -543,13 +644,15 @@ namespace boost { #endif #endif // const volatile: +#if !defined(_M_X64) && !defined(_M_CEE_SAFE) && !defined(_M_CEE_PURE) + template + struct is_function : public true_type {}; +#endif #ifdef _MANAGED template struct is_function : public true_type {}; #else #ifndef _M_AMD64 - template - struct is_function : public true_type {}; template struct is_function : public true_type {}; #endif diff --git a/include/boost/type_traits/detail/is_member_function_pointer_cxx_11.hpp b/include/boost/type_traits/detail/is_member_function_pointer_cxx_11.hpp index d2afafb..ac3477b 100644 --- a/include/boost/type_traits/detail/is_member_function_pointer_cxx_11.hpp +++ b/include/boost/type_traits/detail/is_member_function_pointer_cxx_11.hpp @@ -109,17 +109,19 @@ namespace boost { struct is_member_function_pointer : public true_type {}; #if defined(_MSC_VER) && !defined(_M_ARM) && !defined(_M_ARM64) +#if !defined(_M_X64) && !defined(_M_CEE_SAFE) && !defined(_M_CEE_PURE) + template + struct is_member_function_pointer : public true_type {}; + template + struct is_member_function_pointer : public true_type {}; +#endif #ifdef _MANAGED template struct is_member_function_pointer : public true_type {}; #else #ifndef _M_AMD64 - template - struct is_member_function_pointer : public true_type {}; template struct is_member_function_pointer : public true_type {}; - template - struct is_member_function_pointer : public true_type {}; #endif #if defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64) template @@ -128,17 +130,19 @@ namespace boost { #endif // const: +#if !defined(_M_X64) && !defined(_M_CEE_SAFE) && !defined(_M_CEE_PURE) + template + struct is_member_function_pointer : public true_type {}; + template + struct is_member_function_pointer : public true_type {}; +#endif #ifdef _MANAGED template struct is_member_function_pointer : public true_type {}; #else #ifndef _M_AMD64 - template - struct is_member_function_pointer : public true_type {}; template struct is_member_function_pointer : public true_type {}; - template - struct is_member_function_pointer : public true_type {}; #endif #if defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64) template @@ -147,17 +151,19 @@ namespace boost { #endif // volatile: +#if !defined(_M_X64) && !defined(_M_CEE_SAFE) && !defined(_M_CEE_PURE) + template + struct is_member_function_pointer : public true_type {}; + template + struct is_member_function_pointer : public true_type {}; +#endif #ifdef _MANAGED template struct is_member_function_pointer : public true_type {}; #else #ifndef _M_AMD64 - template - struct is_member_function_pointer : public true_type {}; template struct is_member_function_pointer : public true_type {}; - template - struct is_member_function_pointer : public true_type {}; #endif #if defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64) template @@ -166,17 +172,19 @@ namespace boost { #endif // const volatile: +#if !defined(_M_X64) && !defined(_M_CEE_SAFE) && !defined(_M_CEE_PURE) + template + struct is_member_function_pointer : public true_type {}; + template + struct is_member_function_pointer : public true_type {}; +#endif #ifdef _MANAGED template struct is_member_function_pointer : public true_type {}; #else #ifndef _M_AMD64 - template - struct is_member_function_pointer : public true_type {}; template struct is_member_function_pointer : public true_type {}; - template - struct is_member_function_pointer : public true_type {}; #endif #if defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64) template @@ -185,17 +193,19 @@ namespace boost { #endif // reference qualified: +#if !defined(_M_X64) && !defined(_M_CEE_SAFE) && !defined(_M_CEE_PURE) + template + struct is_member_function_pointer : public true_type {}; + template + struct is_member_function_pointer : public true_type {}; +#endif #ifdef _MANAGED template struct is_member_function_pointer : public true_type {}; #else #ifndef _M_AMD64 - template - struct is_member_function_pointer : public true_type {}; template struct is_member_function_pointer : public true_type {}; - template - struct is_member_function_pointer : public true_type {}; #endif #if defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64) template @@ -204,17 +214,19 @@ namespace boost { #endif // const: +#if !defined(_M_X64) && !defined(_M_CEE_SAFE) && !defined(_M_CEE_PURE) + template + struct is_member_function_pointer : public true_type {}; + template + struct is_member_function_pointer : public true_type {}; +#endif #ifdef _MANAGED template struct is_member_function_pointer : public true_type {}; #else #ifndef _M_AMD64 - template - struct is_member_function_pointer : public true_type {}; template struct is_member_function_pointer : public true_type {}; - template - struct is_member_function_pointer : public true_type {}; #endif #if defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64) template @@ -223,17 +235,19 @@ namespace boost { #endif // volatile: +#if !defined(_M_X64) && !defined(_M_CEE_SAFE) && !defined(_M_CEE_PURE) + template + struct is_member_function_pointer : public true_type {}; + template + struct is_member_function_pointer : public true_type {}; +#endif #ifdef _MANAGED template struct is_member_function_pointer : public true_type {}; #else #ifndef _M_AMD64 - template - struct is_member_function_pointer : public true_type {}; template struct is_member_function_pointer : public true_type {}; - template - struct is_member_function_pointer : public true_type {}; #endif #if defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64) template @@ -242,17 +256,19 @@ namespace boost { #endif // const volatile: +#if !defined(_M_X64) && !defined(_M_CEE_SAFE) && !defined(_M_CEE_PURE) + template + struct is_member_function_pointer : public true_type {}; + template + struct is_member_function_pointer : public true_type {}; +#endif #ifdef _MANAGED template struct is_member_function_pointer : public true_type {}; #else #ifndef _M_AMD64 - template - struct is_member_function_pointer : public true_type {}; template struct is_member_function_pointer : public true_type {}; - template - struct is_member_function_pointer : public true_type {}; #endif #if defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64) template @@ -261,17 +277,19 @@ namespace boost { #endif // rvalue reference qualified: +#if !defined(_M_X64) && !defined(_M_CEE_SAFE) && !defined(_M_CEE_PURE) + template + struct is_member_function_pointer : public true_type {}; + template + struct is_member_function_pointer : public true_type {}; +#endif #ifdef _MANAGED template struct is_member_function_pointer : public true_type {}; #else #ifndef _M_AMD64 - template - struct is_member_function_pointer : public true_type {}; template struct is_member_function_pointer : public true_type {}; - template - struct is_member_function_pointer : public true_type {}; #endif #if defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64) template @@ -280,17 +298,19 @@ namespace boost { #endif // const: +#if !defined(_M_X64) && !defined(_M_CEE_SAFE) && !defined(_M_CEE_PURE) + template + struct is_member_function_pointer : public true_type {}; + template + struct is_member_function_pointer : public true_type {}; +#endif #ifdef _MANAGED template struct is_member_function_pointer : public true_type {}; #else #ifndef _M_AMD64 - template - struct is_member_function_pointer : public true_type {}; template struct is_member_function_pointer : public true_type {}; - template - struct is_member_function_pointer : public true_type {}; #endif #if defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64) template @@ -299,17 +319,19 @@ namespace boost { #endif // volatile: +#if !defined(_M_X64) && !defined(_M_CEE_SAFE) && !defined(_M_CEE_PURE) + template + struct is_member_function_pointer : public true_type {}; + template + struct is_member_function_pointer : public true_type {}; +#endif #ifdef _MANAGED template struct is_member_function_pointer : public true_type {}; #else #ifndef _M_AMD64 - template - struct is_member_function_pointer : public true_type {}; template struct is_member_function_pointer : public true_type {}; - template - struct is_member_function_pointer : public true_type {}; #endif #if defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64) template @@ -318,17 +340,19 @@ namespace boost { #endif // const volatile: +#if !defined(_M_X64) && !defined(_M_CEE_SAFE) && !defined(_M_CEE_PURE) + template + struct is_member_function_pointer : public true_type {}; + template + struct is_member_function_pointer : public true_type {}; +#endif #ifdef _MANAGED template struct is_member_function_pointer : public true_type {}; #else #ifndef _M_AMD64 - template - struct is_member_function_pointer : public true_type {}; template struct is_member_function_pointer : public true_type {}; - template - struct is_member_function_pointer : public true_type {}; #endif #if defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64) template @@ -409,17 +433,19 @@ namespace boost { struct is_member_function_pointer : public true_type {}; #if defined(_MSC_VER) && !defined(_M_ARM) && !defined(_M_ARM64) +#if !defined(_M_X64) && !defined(_M_CEE_SAFE) && !defined(_M_CEE_PURE) + template + struct is_member_function_pointer : public true_type {}; + template + struct is_member_function_pointer : public true_type {}; +#endif #ifdef _MANAGED template struct is_member_function_pointer : public true_type {}; #else #ifndef _M_AMD64 - template - struct is_member_function_pointer : public true_type {}; template struct is_member_function_pointer : public true_type {}; - template - struct is_member_function_pointer : public true_type {}; #endif #if defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64) template @@ -428,17 +454,19 @@ namespace boost { #endif // const: +#if !defined(_M_X64) && !defined(_M_CEE_SAFE) && !defined(_M_CEE_PURE) + template + struct is_member_function_pointer : public true_type {}; + template + struct is_member_function_pointer : public true_type {}; +#endif #ifdef _MANAGED template struct is_member_function_pointer : public true_type {}; #else #ifndef _M_AMD64 - template - struct is_member_function_pointer : public true_type {}; template struct is_member_function_pointer : public true_type {}; - template - struct is_member_function_pointer : public true_type {}; #endif #if defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64) template @@ -447,17 +475,19 @@ namespace boost { #endif // volatile: +#if !defined(_M_X64) && !defined(_M_CEE_SAFE) && !defined(_M_CEE_PURE) + template + struct is_member_function_pointer : public true_type {}; + template + struct is_member_function_pointer : public true_type {}; +#endif #ifdef _MANAGED template struct is_member_function_pointer : public true_type {}; #else #ifndef _M_AMD64 - template - struct is_member_function_pointer : public true_type {}; template struct is_member_function_pointer : public true_type {}; - template - struct is_member_function_pointer : public true_type {}; #endif #if defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64) template @@ -466,17 +496,19 @@ namespace boost { #endif // const volatile: +#if !defined(_M_X64) && !defined(_M_CEE_SAFE) && !defined(_M_CEE_PURE) + template + struct is_member_function_pointer : public true_type {}; + template + struct is_member_function_pointer : public true_type {}; +#endif #ifdef _MANAGED template struct is_member_function_pointer : public true_type {}; #else #ifndef _M_AMD64 - template - struct is_member_function_pointer : public true_type {}; template struct is_member_function_pointer : public true_type {}; - template - struct is_member_function_pointer : public true_type {}; #endif #if defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64) template @@ -485,17 +517,19 @@ namespace boost { #endif // reference qualified: +#if !defined(_M_X64) && !defined(_M_CEE_SAFE) && !defined(_M_CEE_PURE) + template + struct is_member_function_pointer : public true_type {}; + template + struct is_member_function_pointer : public true_type {}; +#endif #ifdef _MANAGED template struct is_member_function_pointer : public true_type {}; #else #ifndef _M_AMD64 - template - struct is_member_function_pointer : public true_type {}; template struct is_member_function_pointer : public true_type {}; - template - struct is_member_function_pointer : public true_type {}; #endif #if defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64) template @@ -504,17 +538,19 @@ namespace boost { #endif // const: +#if !defined(_M_X64) && !defined(_M_CEE_SAFE) && !defined(_M_CEE_PURE) + template + struct is_member_function_pointer : public true_type {}; + template + struct is_member_function_pointer : public true_type {}; +#endif #ifdef _MANAGED template struct is_member_function_pointer : public true_type {}; #else #ifndef _M_AMD64 - template - struct is_member_function_pointer : public true_type {}; template struct is_member_function_pointer : public true_type {}; - template - struct is_member_function_pointer : public true_type {}; #endif #if defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64) template @@ -523,17 +559,19 @@ namespace boost { #endif // volatile: +#if !defined(_M_X64) && !defined(_M_CEE_SAFE) && !defined(_M_CEE_PURE) + template + struct is_member_function_pointer : public true_type {}; + template + struct is_member_function_pointer : public true_type {}; +#endif #ifdef _MANAGED template struct is_member_function_pointer : public true_type {}; #else #ifndef _M_AMD64 - template - struct is_member_function_pointer : public true_type {}; template struct is_member_function_pointer : public true_type {}; - template - struct is_member_function_pointer : public true_type {}; #endif #if defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64) template @@ -542,17 +580,19 @@ namespace boost { #endif // const volatile: +#if !defined(_M_X64) && !defined(_M_CEE_SAFE) && !defined(_M_CEE_PURE) + template + struct is_member_function_pointer : public true_type {}; + template + struct is_member_function_pointer : public true_type {}; +#endif #ifdef _MANAGED template struct is_member_function_pointer : public true_type {}; #else #ifndef _M_AMD64 - template - struct is_member_function_pointer : public true_type {}; template struct is_member_function_pointer : public true_type {}; - template - struct is_member_function_pointer : public true_type {}; #endif #if defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64) template @@ -561,17 +601,19 @@ namespace boost { #endif // rvalue reference qualified: +#if !defined(_M_X64) && !defined(_M_CEE_SAFE) && !defined(_M_CEE_PURE) + template + struct is_member_function_pointer : public true_type {}; + template + struct is_member_function_pointer : public true_type {}; +#endif #ifdef _MANAGED template struct is_member_function_pointer : public true_type {}; #else #ifndef _M_AMD64 - template - struct is_member_function_pointer : public true_type {}; template struct is_member_function_pointer : public true_type {}; - template - struct is_member_function_pointer : public true_type {}; #endif #if defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64) template @@ -580,17 +622,19 @@ namespace boost { #endif // const: +#if !defined(_M_X64) && !defined(_M_CEE_SAFE) && !defined(_M_CEE_PURE) + template + struct is_member_function_pointer : public true_type {}; + template + struct is_member_function_pointer : public true_type {}; +#endif #ifdef _MANAGED template struct is_member_function_pointer : public true_type {}; #else #ifndef _M_AMD64 - template - struct is_member_function_pointer : public true_type {}; template struct is_member_function_pointer : public true_type {}; - template - struct is_member_function_pointer : public true_type {}; #endif #if defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64) template @@ -599,17 +643,19 @@ namespace boost { #endif // volatile: +#if !defined(_M_X64) && !defined(_M_CEE_SAFE) && !defined(_M_CEE_PURE) + template + struct is_member_function_pointer : public true_type {}; + template + struct is_member_function_pointer : public true_type {}; +#endif #ifdef _MANAGED template struct is_member_function_pointer : public true_type {}; #else #ifndef _M_AMD64 - template - struct is_member_function_pointer : public true_type {}; template struct is_member_function_pointer : public true_type {}; - template - struct is_member_function_pointer : public true_type {}; #endif #if defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64) template @@ -618,17 +664,19 @@ namespace boost { #endif // const volatile: +#if !defined(_M_X64) && !defined(_M_CEE_SAFE) && !defined(_M_CEE_PURE) + template + struct is_member_function_pointer : public true_type {}; + template + struct is_member_function_pointer : public true_type {}; +#endif #ifdef _MANAGED template struct is_member_function_pointer : public true_type {}; #else #ifndef _M_AMD64 - template - struct is_member_function_pointer : public true_type {}; template struct is_member_function_pointer : public true_type {}; - template - struct is_member_function_pointer : public true_type {}; #endif #if defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64) template