diff --git a/appveyor.yml b/appveyor.yml index 4d2fa36e..091a2e66 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -42,27 +42,22 @@ environment: TOOLSET: gcc VARIANT: release -# The following configurations fail with -# ./boost/thread/detail/invoke.hpp:101:43: internal compiler error: in gimplify_expr, at gimplify.c:12039 -# https://sourceforge.net/p/mingw-w64/bugs/694/ -# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83756 -# -# - ADDPATH: C:\mingw\bin; -# TOOLSET: gcc -# CXXSTD: 11 -# VARIANT: debug -# -# - ADDPATH: C:\cygwin64\bin; -# TOOLSET: gcc -# VARIANT: debug -# -# - ADDPATH: C:\mingw-w64\x86_64-6.3.0-posix-seh-rt_v5-rev1\mingw64\bin; -# TOOLSET: gcc -# VARIANT: debug -# -# - ADDPATH: C:\mingw-w64\x86_64-8.1.0-posix-seh-rt_v6-rev0\mingw64\bin; -# TOOLSET: gcc -# VARIANT: debug,release + - ADDPATH: C:\mingw\bin; + TOOLSET: gcc + CXXSTD: 11 + VARIANT: debug + + - ADDPATH: C:\cygwin64\bin; + TOOLSET: gcc + VARIANT: debug + + - ADDPATH: C:\mingw-w64\x86_64-6.3.0-posix-seh-rt_v5-rev1\mingw64\bin; + TOOLSET: gcc + VARIANT: debug + + - ADDPATH: C:\mingw-w64\x86_64-8.1.0-posix-seh-rt_v6-rev0\mingw64\bin; + TOOLSET: gcc + VARIANT: debug,release install: - set GIT_FETCH_JOBS=8 diff --git a/include/boost/thread/detail/invoke.hpp b/include/boost/thread/detail/invoke.hpp index b9da4afb..ae4dd89c 100644 --- a/include/boost/thread/detail/invoke.hpp +++ b/include/boost/thread/detail/invoke.hpp @@ -32,6 +32,7 @@ #include #include #include +#include #include #ifndef BOOST_NO_CXX11_HDR_FUNCTIONAL #include @@ -85,7 +86,13 @@ namespace boost // bullets 3 and 4 - template + // enable_if avoids + // + // ./boost/thread/detail/invoke.hpp:101:43: internal compiler error: in gimplify_expr, at gimplify.c:12039 + // https://sourceforge.net/p/mingw-w64/bugs/694/ + // https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83756 + + template >::type> inline auto invoke(BOOST_THREAD_RV_REF(Fp) f, BOOST_THREAD_RV_REF(A0) a0) -> decltype(boost::forward(a0).*f) @@ -93,7 +100,7 @@ namespace boost return boost::forward(a0).*f; } - template + template >::type> inline auto invoke(BOOST_THREAD_RV_REF(Fp) f, BOOST_THREAD_RV_REF(A0) a0) -> decltype((*boost::forward(a0)).*f) @@ -101,7 +108,7 @@ namespace boost return (*boost::forward(a0)).*f; } - template + template >::type> inline auto invoke(BOOST_THREAD_RV_REF(Fp) f, BOOST_THREAD_RV_REF(A0) a0) -> decltype(boost::forward(a0).*f) @@ -109,7 +116,7 @@ namespace boost return boost::forward(a0).*f; } - template + template >::type> inline auto invoke(BOOST_THREAD_RV_REF(Fp) f, BOOST_THREAD_RV_REF(A0) a0) -> decltype((*boost::forward(a0)).*f)