From 598ec67e4d6727dd9455bcc9959e32fee02a80ac Mon Sep 17 00:00:00 2001 From: Michael Goulding Date: Wed, 18 Jul 2018 10:59:15 -0700 Subject: [PATCH 1/2] VS 15.8.0 Preview 4.0 has a bug with alias templates --- include/pybind11/detail/common.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/pybind11/detail/common.h b/include/pybind11/detail/common.h index 3c6722891..89d922190 100644 --- a/include/pybind11/detail/common.h +++ b/include/pybind11/detail/common.h @@ -476,7 +476,7 @@ template struct void_t_impl { using type = void; }; template using void_t = typename void_t_impl::type; /// Compile-time all/any/none of that check the boolean value of all template types -#ifdef __cpp_fold_expressions +#if (!defined(_MSC_VER) || ( _MSC_VER >= 1916 )) && defined(__cpp_fold_expressions) template using all_of = bool_constant<(Ts::value && ...)>; template using any_of = bool_constant<(Ts::value || ...)>; #elif !defined(_MSC_VER) From 7d534251ca67c5e725ed549900f04adeb5ddb99e Mon Sep 17 00:00:00 2001 From: Michael Goulding Date: Thu, 19 Jul 2018 10:27:41 -0700 Subject: [PATCH 2/2] Address feedback --- include/pybind11/detail/common.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/pybind11/detail/common.h b/include/pybind11/detail/common.h index 89d922190..8d65b260d 100644 --- a/include/pybind11/detail/common.h +++ b/include/pybind11/detail/common.h @@ -476,7 +476,7 @@ template struct void_t_impl { using type = void; }; template using void_t = typename void_t_impl::type; /// Compile-time all/any/none of that check the boolean value of all template types -#if (!defined(_MSC_VER) || ( _MSC_VER >= 1916 )) && defined(__cpp_fold_expressions) +#if defined(__cpp_fold_expressions) && !(defined(_MSC_VER) && (_MSC_VER < 1916)) template using all_of = bool_constant<(Ts::value && ...)>; template using any_of = bool_constant<(Ts::value || ...)>; #elif !defined(_MSC_VER)