diff --git a/include/boost/mp11/list.hpp b/include/boost/mp11/list.hpp index 47feacd..3646764 100644 --- a/include/boost/mp11/list.hpp +++ b/include/boost/mp11/list.hpp @@ -12,9 +12,10 @@ #include #include #include -#include +#include #include #include +#include #include #include @@ -35,6 +36,9 @@ template using mp_list_c = mp_list // mp_is_list // in detail/mp_is_list.hpp +// mp_is_value_list +// in detail/mp_is_value_list.hpp + // mp_size namespace detail { diff --git a/test/Jamfile b/test/Jamfile index aae6f13..f0db244 100644 --- a/test/Jamfile +++ b/test/Jamfile @@ -69,6 +69,7 @@ run mp_transform_third.cpp ; run mp_transform_third_2.cpp ; run mp_list_v.cpp ; run mp_rename_v.cpp ; +run mp_is_value_list.cpp ; # algorithm run mp_transform.cpp ; diff --git a/test/mp_is_list.cpp b/test/mp_is_list.cpp index 62e602e..5649c47 100644 --- a/test/mp_is_list.cpp +++ b/test/mp_is_list.cpp @@ -13,6 +13,8 @@ #include #include +template struct V2 {}; + int main() { using boost::mp11::mp_list; @@ -46,5 +48,27 @@ int main() BOOST_TEST_TRAIT_TRUE((std::is_same>, mp_true>)); } +#if defined(BOOST_MP11_HAS_TEMPLATE_AUTO) + + using boost::mp11::mp_list_v; + + { + BOOST_TEST_TRAIT_SAME(mp_is_list>, mp_false); + BOOST_TEST_TRAIT_SAME(mp_is_list>, mp_false); + BOOST_TEST_TRAIT_SAME(mp_is_list>, mp_false); + BOOST_TEST_TRAIT_SAME(mp_is_list>, mp_false); + BOOST_TEST_TRAIT_SAME(mp_is_list>, mp_false); + } + + { + BOOST_TEST_TRAIT_SAME(mp_is_list>, mp_false); + BOOST_TEST_TRAIT_SAME(mp_is_list>, mp_false); + BOOST_TEST_TRAIT_SAME(mp_is_list>, mp_false); + BOOST_TEST_TRAIT_SAME(mp_is_list>, mp_false); + BOOST_TEST_TRAIT_SAME(mp_is_list>, mp_false); + } + +#endif + return boost::report_errors(); } diff --git a/test/mp_is_value_list.cpp b/test/mp_is_value_list.cpp new file mode 100644 index 0000000..e70dc47 --- /dev/null +++ b/test/mp_is_value_list.cpp @@ -0,0 +1,58 @@ +// Copyright 2023 Peter Dimov +// Distributed under the Boost Software License, Version 1.0. +// https://www.boost.org/LICENSE_1_0.txt + +#include +#include +#include +#include + +template struct V2 {}; + +int main() +{ + using boost::mp11::mp_list; + using boost::mp11::mp_is_value_list; + using boost::mp11::mp_true; + using boost::mp11::mp_false; + + { + BOOST_TEST_TRAIT_SAME(mp_is_value_list, mp_false); + BOOST_TEST_TRAIT_SAME(mp_is_value_list, mp_false); + BOOST_TEST_TRAIT_SAME(mp_is_value_list, mp_false); + + BOOST_TEST_TRAIT_SAME(mp_is_value_list>, mp_false); + } + + { + BOOST_TEST_TRAIT_SAME(mp_is_value_list>, mp_false); + BOOST_TEST_TRAIT_SAME(mp_is_value_list>, mp_false); + BOOST_TEST_TRAIT_SAME(mp_is_value_list>, mp_false); + BOOST_TEST_TRAIT_SAME(mp_is_value_list>, mp_false); + BOOST_TEST_TRAIT_SAME(mp_is_value_list>, mp_false); + } + +#if defined(BOOST_MP11_HAS_TEMPLATE_AUTO) + + using boost::mp11::mp_list_v; + + { + BOOST_TEST_TRAIT_SAME(mp_is_value_list>, mp_true); + BOOST_TEST_TRAIT_SAME(mp_is_value_list>, mp_true); + BOOST_TEST_TRAIT_SAME(mp_is_value_list>, mp_true); + BOOST_TEST_TRAIT_SAME(mp_is_value_list>, mp_true); + BOOST_TEST_TRAIT_SAME(mp_is_value_list>, mp_true); + } + + { + BOOST_TEST_TRAIT_SAME(mp_is_value_list>, mp_true); + BOOST_TEST_TRAIT_SAME(mp_is_value_list>, mp_true); + BOOST_TEST_TRAIT_SAME(mp_is_value_list>, mp_true); + BOOST_TEST_TRAIT_SAME(mp_is_value_list>, mp_true); + BOOST_TEST_TRAIT_SAME(mp_is_value_list>, mp_true); + } + +#endif + + return boost::report_errors(); +}