mirror of
https://github.com/boostorg/mp11.git
synced 2025-08-10 09:44:27 +02:00
Add one additional test for mp_any that exposes an issue with msvc-14.1/cxxstd=17
This commit is contained in:
@@ -125,7 +125,7 @@ template<class T1, class... T> struct mp_or_impl<T1, T...>
|
|||||||
} // namespace detail
|
} // namespace detail
|
||||||
|
|
||||||
// mp_any<T...>
|
// mp_any<T...>
|
||||||
#if defined( BOOST_MP11_HAS_FOLD_EXPRESSIONS ) && !BOOST_MP11_WORKAROUND( BOOST_MP11_GCC, < 80200 )
|
#if defined( BOOST_MP11_HAS_FOLD_EXPRESSIONS ) && !BOOST_MP11_WORKAROUND( BOOST_MP11_GCC, < 80200 ) && !BOOST_MP11_WORKAROUND( BOOST_MP11_MSVC, < 1920 )
|
||||||
|
|
||||||
template<class... T> using mp_any = mp_bool<(static_cast<bool>(T::value) || ...)>;
|
template<class... T> using mp_any = mp_bool<(static_cast<bool>(T::value) || ...)>;
|
||||||
|
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
// Copyright 2015, 2016 Peter Dimov.
|
// Copyright 2015, 2016, 2019 Peter Dimov.
|
||||||
//
|
//
|
||||||
// Distributed under the Boost Software License, Version 1.0.
|
// Distributed under the Boost Software License, Version 1.0.
|
||||||
//
|
//
|
||||||
@@ -9,6 +9,7 @@
|
|||||||
|
|
||||||
#include <boost/mp11/function.hpp>
|
#include <boost/mp11/function.hpp>
|
||||||
#include <boost/mp11/integral.hpp>
|
#include <boost/mp11/integral.hpp>
|
||||||
|
#include <boost/mp11/set.hpp>
|
||||||
#include <boost/mp11/detail/config.hpp>
|
#include <boost/mp11/detail/config.hpp>
|
||||||
#include <boost/core/lightweight_test_trait.hpp>
|
#include <boost/core/lightweight_test_trait.hpp>
|
||||||
#include <type_traits>
|
#include <type_traits>
|
||||||
@@ -27,6 +28,10 @@ template<class... T> using variant_base = variant_base_impl<mp_all<std::has_triv
|
|||||||
template<class... T> using variant_base = variant_base_impl<mp_all<std::is_trivially_destructible<T>...>::value, mp_any<mp_all<std::is_nothrow_move_constructible<T>...>, std::is_nothrow_default_constructible<T>...>::value, T...>;
|
template<class... T> using variant_base = variant_base_impl<mp_all<std::is_trivially_destructible<T>...>::value, mp_any<mp_all<std::is_nothrow_move_constructible<T>...>, std::is_nothrow_default_constructible<T>...>::value, T...>;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
using boost::mp11::mp_set_contains;
|
||||||
|
|
||||||
|
template<class T, class... S> using in_any_set = mp_any< mp_set_contains<S, T>... >;
|
||||||
|
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
using boost::mp11::mp_true;
|
using boost::mp11::mp_true;
|
||||||
@@ -78,5 +83,9 @@ int main()
|
|||||||
|
|
||||||
variant_base<void, int, float>();
|
variant_base<void, int, float>();
|
||||||
|
|
||||||
|
using boost::mp11::mp_list;
|
||||||
|
|
||||||
|
BOOST_TEST_TRAIT_TRUE((std::is_same<in_any_set<void, mp_list<void>, mp_list<int>>, mp_true>));
|
||||||
|
|
||||||
return boost::report_errors();
|
return boost::report_errors();
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user