diff --git a/include/boost/fusion/support/detail/and.hpp b/include/boost/fusion/support/detail/and.hpp index 8560f344..1b310dda 100644 --- a/include/boost/fusion/support/detail/and.hpp +++ b/include/boost/fusion/support/detail/and.hpp @@ -20,7 +20,11 @@ namespace boost { namespace fusion { namespace detail { template struct and_impl...> : true_type {}; - + + // This specialization is necessary to avoid MSVC-12 variadics bug. + template + struct and_impl1 : and_impl...> {}; + /* fusion::detail::and_ differs from mpl::and_ in the following ways: - The empty set is valid and returns true - A single element set is valid and returns the identity @@ -29,7 +33,7 @@ namespace boost { namespace fusion { namespace detail { reduces instantations when returning true; the implementation is not recursive. */ template - struct and_ : and_impl...> {}; + struct and_ : and_impl1 {}; }}} #endif // FUSION_AND_07152016_1625