diff --git a/appveyor.yml b/appveyor.yml index 722dc7d..432b830 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -21,8 +21,12 @@ environment: - ARGS: --toolset=msvc-11.0 address-model=32 - ARGS: --toolset=msvc-12.0 address-model=32 - ARGS: --toolset=msvc-14.0 address-model=32 + - ARGS: --toolset=msvc-12.0 address-model=32 cxxflags=-clr asynch-exceptions=on + - ARGS: --toolset=msvc-14.0 address-model=32 cxxflags=-clr asynch-exceptions=on - ARGS: --toolset=msvc-12.0 address-model=64 - ARGS: --toolset=msvc-14.0 address-model=64 + - ARGS: --toolset=msvc-12.0 address-model=64 cxxflags=-clr asynch-exceptions=on + - ARGS: --toolset=msvc-14.0 address-model=64 cxxflags=-clr asynch-exceptions=on - ARGS: --toolset=msvc-14.0 address-model=64 cxxflags=-std:c++latest - APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017 ARGS: --toolset=msvc-14.1 address-model=64 @@ -30,6 +34,10 @@ environment: ARGS: --toolset=msvc-14.1 address-model=32 - APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017 ARGS: --toolset=msvc-14.1 address-model=64 cxxflags=-std:c++latest + - APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017 + ARGS: --toolset=msvc-14.1 address-model=64 cxxflags=-clr asynch-exceptions=on + - APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017 + ARGS: --toolset=msvc-14.1 address-model=32 cxxflags=-clr asynch-exceptions=on - ARGS: --toolset=gcc address-model=64 PATH: C:\mingw-w64\x86_64-6.3.0-posix-seh-rt_v5-rev1\mingw64\bin;%PATH% - ARGS: --toolset=gcc address-model=64 cxxflags=-std=gnu++1z 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 102513b..621d974 100644 --- a/include/boost/type_traits/detail/is_function_cxx_11.hpp +++ b/include/boost/type_traits/detail/is_function_cxx_11.hpp @@ -225,7 +225,7 @@ namespace boost { #endif #ifndef _M_AMD64 template - struct is_function : public true_type {}; + struct is_function : public true_type {}; template struct is_function : public true_type {}; #endif diff --git a/include/boost/type_traits/detail/is_likely_lambda.hpp b/include/boost/type_traits/detail/is_likely_lambda.hpp index 39aa528..21810dd 100644 --- a/include/boost/type_traits/detail/is_likely_lambda.hpp +++ b/include/boost/type_traits/detail/is_likely_lambda.hpp @@ -27,7 +27,8 @@ struct is_likely_stateless_lambda : public false_type {}; }} -#elif !defined(BOOST_NO_CXX11_LAMBDAS) && !defined(BOOST_NO_CXX11_DECLTYPE) && !defined(BOOST_NO_CXX11_TEMPLATE_ALIASES) && !BOOST_WORKAROUND(BOOST_MSVC, < 1900) +#elif !defined(BOOST_NO_CXX11_LAMBDAS) && !defined(BOOST_NO_CXX11_DECLTYPE) && !defined(BOOST_NO_CXX11_TEMPLATE_ALIASES) && !BOOST_WORKAROUND(BOOST_MSVC, < 1900)\ + && !(BOOST_WORKAROUND(BOOST_MSVC, == 1900) && defined(__CLR_VER)) #include #include 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 aa205bb..60cb069 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 @@ -116,8 +116,10 @@ namespace boost { #ifndef _M_AMD64 template struct is_member_function_pointer : public true_type {}; +#ifndef __CLR_VER template struct is_member_function_pointer : public true_type {}; +#endif template struct is_member_function_pointer : public true_type {}; #endif @@ -125,35 +127,39 @@ namespace boost { template struct is_member_function_pointer : public true_type {}; #endif + // const: #ifdef __CLR_VER template - struct is_member_function_pointer : public true_type {}; + struct is_member_function_pointer : public true_type {}; #endif #ifndef _M_AMD64 template struct is_member_function_pointer : public true_type {}; +#ifndef __CLR_VER template struct is_member_function_pointer : public true_type {}; +#endif template struct is_member_function_pointer : public true_type {}; #endif -#ifdef __CLR_VER #ifndef __CLR_VER template struct is_member_function_pointer : public true_type {}; #endif -#endif + // volatile: #ifdef __CLR_VER template - struct is_member_function_pointer : public true_type {}; + struct is_member_function_pointer : public true_type {}; #endif #ifndef _M_AMD64 template struct is_member_function_pointer : public true_type {}; +#ifndef __CLR_VER template struct is_member_function_pointer : public true_type {}; +#endif template struct is_member_function_pointer : public true_type {}; #endif @@ -161,16 +167,19 @@ namespace boost { template struct is_member_function_pointer : public true_type {}; #endif + // const volatile: #ifdef __CLR_VER template - struct is_member_function_pointer : public true_type {}; + struct is_member_function_pointer : public true_type {}; #endif #ifndef _M_AMD64 template struct is_member_function_pointer : public true_type {}; +#ifndef __CLR_VER template struct is_member_function_pointer : public true_type {}; +#endif template struct is_member_function_pointer : public true_type {}; #endif @@ -182,13 +191,15 @@ namespace boost { // reference qualified: #ifdef __CLR_VER template - struct is_member_function_pointer : public true_type {}; + struct is_member_function_pointer : public true_type {}; #endif #ifndef _M_AMD64 template struct is_member_function_pointer : public true_type {}; +#ifndef __CLR_VER template struct is_member_function_pointer : public true_type {}; +#endif template struct is_member_function_pointer : public true_type {}; #endif @@ -196,16 +207,19 @@ namespace boost { template struct is_member_function_pointer : public true_type {}; #endif + // const: #ifdef __CLR_VER template - struct is_member_function_pointer : public true_type {}; + struct is_member_function_pointer : public true_type {}; #endif #ifndef _M_AMD64 template struct is_member_function_pointer : public true_type {}; +#ifndef __CLR_VER template struct is_member_function_pointer : public true_type {}; +#endif template struct is_member_function_pointer : public true_type {}; #endif @@ -213,16 +227,19 @@ namespace boost { template struct is_member_function_pointer : public true_type {}; #endif + // volatile: #ifdef __CLR_VER template - struct is_member_function_pointer : public true_type {}; + struct is_member_function_pointer : public true_type {}; #endif #ifndef _M_AMD64 template struct is_member_function_pointer : public true_type {}; +#ifndef __CLR_VER template struct is_member_function_pointer : public true_type {}; +#endif template struct is_member_function_pointer : public true_type {}; #endif @@ -230,16 +247,19 @@ namespace boost { template struct is_member_function_pointer : public true_type {}; #endif + // const volatile: #ifdef __CLR_VER template - struct is_member_function_pointer : public true_type {}; + struct is_member_function_pointer : public true_type {}; #endif #ifndef _M_AMD64 template struct is_member_function_pointer : public true_type {}; +#ifndef __CLR_VER template struct is_member_function_pointer : public true_type {}; +#endif template struct is_member_function_pointer : public true_type {}; #endif @@ -251,13 +271,15 @@ namespace boost { // rvalue reference qualified: #ifdef __CLR_VER template - struct is_member_function_pointer : public true_type {}; + struct is_member_function_pointer : public true_type {}; #endif #ifndef _M_AMD64 template struct is_member_function_pointer : public true_type {}; +#ifndef __CLR_VER template struct is_member_function_pointer : public true_type {}; +#endif template struct is_member_function_pointer : public true_type {}; #endif @@ -265,16 +287,19 @@ namespace boost { template struct is_member_function_pointer : public true_type {}; #endif + // const: #ifdef __CLR_VER template - struct is_member_function_pointer : public true_type {}; + struct is_member_function_pointer : public true_type {}; #endif #ifndef _M_AMD64 template struct is_member_function_pointer : public true_type {}; +#ifndef __CLR_VER template struct is_member_function_pointer : public true_type {}; +#endif template struct is_member_function_pointer : public true_type {}; #endif @@ -282,16 +307,19 @@ namespace boost { template struct is_member_function_pointer : public true_type {}; #endif + // volatile: #ifdef __CLR_VER template - struct is_member_function_pointer : public true_type {}; + struct is_member_function_pointer : public true_type {}; #endif #ifndef _M_AMD64 template struct is_member_function_pointer : public true_type {}; +#ifndef __CLR_VER template struct is_member_function_pointer : public true_type {}; +#endif template struct is_member_function_pointer : public true_type {}; #endif @@ -299,16 +327,19 @@ namespace boost { template struct is_member_function_pointer : public true_type {}; #endif + // const volatile: #ifdef __CLR_VER template - struct is_member_function_pointer : public true_type {}; + struct is_member_function_pointer : public true_type {}; #endif #ifndef _M_AMD64 template struct is_member_function_pointer : public true_type {}; +#ifndef __CLR_VER template struct is_member_function_pointer : public true_type {}; +#endif template struct is_member_function_pointer : public true_type {}; #endif @@ -391,13 +422,15 @@ namespace boost { #ifdef _MSC_VER #ifdef __CLR_VER template - struct is_member_function_pointer : public true_type {}; + struct is_member_function_pointer : public true_type {}; #endif #ifndef _M_AMD64 template struct is_member_function_pointer : public true_type {}; +#ifndef __CLR_VER template struct is_member_function_pointer : public true_type {}; +#endif template struct is_member_function_pointer : public true_type {}; #endif @@ -405,16 +438,19 @@ namespace boost { template struct is_member_function_pointer : public true_type {}; #endif + // const: #ifdef __CLR_VER template - struct is_member_function_pointer : public true_type {}; + struct is_member_function_pointer : public true_type {}; #endif #ifndef _M_AMD64 template struct is_member_function_pointer : public true_type {}; +#ifndef __CLR_VER template struct is_member_function_pointer : public true_type {}; +#endif template struct is_member_function_pointer : public true_type {}; #endif @@ -422,16 +458,19 @@ namespace boost { template struct is_member_function_pointer : public true_type {}; #endif + // volatile: #ifdef __CLR_VER template - struct is_member_function_pointer : public true_type {}; + struct is_member_function_pointer : public true_type {}; #endif #ifndef _M_AMD64 template struct is_member_function_pointer : public true_type {}; +#ifndef __CLR_VER template struct is_member_function_pointer : public true_type {}; +#endif template struct is_member_function_pointer : public true_type {}; #endif @@ -439,16 +478,19 @@ namespace boost { template struct is_member_function_pointer : public true_type {}; #endif + // const volatile: #ifdef __CLR_VER template - struct is_member_function_pointer : public true_type {}; + struct is_member_function_pointer : public true_type {}; #endif #ifndef _M_AMD64 template struct is_member_function_pointer : public true_type {}; +#ifndef __CLR_VER template struct is_member_function_pointer : public true_type {}; +#endif template struct is_member_function_pointer : public true_type {}; #endif @@ -460,13 +502,15 @@ namespace boost { // reference qualified: #ifdef __CLR_VER template - struct is_member_function_pointer : public true_type {}; + struct is_member_function_pointer : public true_type {}; #endif #ifndef _M_AMD64 template struct is_member_function_pointer : public true_type {}; +#ifndef __CLR_VER template struct is_member_function_pointer : public true_type {}; +#endif template struct is_member_function_pointer : public true_type {}; #endif @@ -474,16 +518,19 @@ namespace boost { template struct is_member_function_pointer : public true_type {}; #endif + // const: #ifdef __CLR_VER template - struct is_member_function_pointer : public true_type {}; + struct is_member_function_pointer : public true_type {}; #endif #ifndef _M_AMD64 template struct is_member_function_pointer : public true_type {}; +#ifndef __CLR_VER template struct is_member_function_pointer : public true_type {}; +#endif template struct is_member_function_pointer : public true_type {}; #endif @@ -491,16 +538,19 @@ namespace boost { template struct is_member_function_pointer : public true_type {}; #endif + // volatile: #ifdef __CLR_VER template - struct is_member_function_pointer : public true_type {}; + struct is_member_function_pointer : public true_type {}; #endif #ifndef _M_AMD64 template struct is_member_function_pointer : public true_type {}; +#ifndef __CLR_VER template struct is_member_function_pointer : public true_type {}; +#endif template struct is_member_function_pointer : public true_type {}; #endif @@ -508,16 +558,19 @@ namespace boost { template struct is_member_function_pointer : public true_type {}; #endif + // const volatile: #ifdef __CLR_VER template - struct is_member_function_pointer : public true_type {}; + struct is_member_function_pointer : public true_type {}; #endif #ifndef _M_AMD64 template struct is_member_function_pointer : public true_type {}; +#ifndef __CLR_VER template struct is_member_function_pointer : public true_type {}; +#endif template struct is_member_function_pointer : public true_type {}; #endif @@ -529,13 +582,15 @@ namespace boost { // rvalue reference qualified: #ifdef __CLR_VER template - struct is_member_function_pointer : public true_type {}; + struct is_member_function_pointer : public true_type {}; #endif #ifndef _M_AMD64 template struct is_member_function_pointer : public true_type {}; +#ifndef __CLR_VER template struct is_member_function_pointer : public true_type {}; +#endif template struct is_member_function_pointer : public true_type {}; #endif @@ -543,16 +598,19 @@ namespace boost { template struct is_member_function_pointer : public true_type {}; #endif + // const: #ifdef __CLR_VER template - struct is_member_function_pointer : public true_type {}; + struct is_member_function_pointer : public true_type {}; #endif #ifndef _M_AMD64 template struct is_member_function_pointer : public true_type {}; +#ifndef __CLR_VER template struct is_member_function_pointer : public true_type {}; +#endif template struct is_member_function_pointer : public true_type {}; #endif @@ -560,16 +618,19 @@ namespace boost { template struct is_member_function_pointer : public true_type {}; #endif + // volatile: #ifdef __CLR_VER template - struct is_member_function_pointer : public true_type {}; + struct is_member_function_pointer : public true_type {}; #endif #ifndef _M_AMD64 template struct is_member_function_pointer : public true_type {}; +#ifndef __CLR_VER template struct is_member_function_pointer : public true_type {}; +#endif template struct is_member_function_pointer : public true_type {}; #endif @@ -577,16 +638,20 @@ namespace boost { template struct is_member_function_pointer : public true_type {}; #endif + // const volatile: #ifdef __CLR_VER template - struct is_member_function_pointer : public true_type {}; + struct is_member_function_pointer : public true_type {}; + #endif #ifndef _M_AMD64 template struct is_member_function_pointer : public true_type {}; +#ifndef __CLR_VER template struct is_member_function_pointer : public true_type {}; +#endif template struct is_member_function_pointer : public true_type {}; #endif diff --git a/test/has_nothrow_copy_test.cpp b/test/has_nothrow_copy_test.cpp index 515c777..52fa2fb 100644 --- a/test/has_nothrow_copy_test.cpp +++ b/test/has_nothrow_copy_test.cpp @@ -239,7 +239,8 @@ BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_copy::value, false); #ifndef BOOST_NO_CXX11_DELETED_FUNCTIONS BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_copy::value, false); -#if !(defined(CI_SUPPRESS_KNOWN_ISSUES) && BOOST_WORKAROUND(BOOST_GCC, < 40600)) && !(defined(CI_SUPPRESS_KNOWN_ISSUES) && BOOST_WORKAROUND(BOOST_MSVC, == 1800)) +#if !(defined(CI_SUPPRESS_KNOWN_ISSUES) && BOOST_WORKAROUND(BOOST_GCC, < 40600)) && !(defined(CI_SUPPRESS_KNOWN_ISSUES) && BOOST_WORKAROUND(BOOST_MSVC, == 1800))\ + && !(defined(CI_SUPPRESS_KNOWN_ISSUES) && defined(__CLR_VER)) BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_copy::value, false); #endif #endif diff --git a/test/is_member_func_test.cpp b/test/is_member_func_test.cpp index 61d6597..5c3e179 100644 --- a/test/is_member_func_test.cpp +++ b/test/is_member_func_test.cpp @@ -70,8 +70,10 @@ BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_member_function_pointer::value, fal typedef void (__stdcall test_abc1::*scall_proc)(); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_member_function_pointer::value, true); +#ifndef __CLR_VER typedef void (__fastcall test_abc1::*fcall_proc)(int); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_member_function_pointer::value, true); +#endif typedef void (__cdecl test_abc1::*ccall_proc)(int, long, double); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_member_function_pointer::value, true); #if (_MSC_VER >= 1800) && !defined(__CLR_VER) diff --git a/test/is_member_pointer_test.cpp b/test/is_member_pointer_test.cpp index 431cebd..e83934e 100644 --- a/test/is_member_pointer_test.cpp +++ b/test/is_member_pointer_test.cpp @@ -31,8 +31,10 @@ BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_member_pointer::value, false); #ifdef BOOST_TT_TEST_MS_FUNC_SIGS typedef void (__stdcall test_abc1::*scall_proc)(); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_member_pointer::value, true); +#ifndef __CLR_VER typedef void (__fastcall test_abc1::*fcall_proc)(int); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_member_pointer::value, true); +#endif typedef void (__cdecl test_abc1::*ccall_proc)(int, long, double); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_member_pointer::value, true); #endif diff --git a/test/type_with_alignment_test.cpp b/test/type_with_alignment_test.cpp index 8548ead..8888af4 100644 --- a/test/type_with_alignment_test.cpp +++ b/test/type_with_alignment_test.cpp @@ -25,6 +25,10 @@ struct __declspec(align(64)) a64 { char m[64]; }; struct __declspec(align(128)) a128 { char m[128]; }; #endif +#ifdef __CLR_VER +#pragma warning(disable:4793) // vaarg function +#endif + void check_call2(...){} template