• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright 2018 Glen Joseph Fernandes
2 // (glenjofe@gmail.com)
3 //
4 // Distributed under the Boost Software License, Version 1.0.
5 //
6 // See accompanying file LICENSE_1_0.txt or copy at
7 // http://www.boost.org/LICENSE_1_0.txt
8 
9 #include <boost/mp11/algorithm.hpp>
10 #include <boost/mp11/list.hpp>
11 #include <boost/mp11/integral.hpp>
12 #include <boost/core/lightweight_test_trait.hpp>
13 #include <type_traits>
14 #include <tuple>
15 #include <utility>
16 
main()17 int main()
18 {
19     using boost::mp11::mp_list;
20     using boost::mp11::mp_starts_with;
21     using boost::mp11::mp_true;
22     using boost::mp11::mp_false;
23     BOOST_TEST_TRAIT_TRUE((std::is_same<mp_starts_with<mp_list<>,
24         mp_list<> >, mp_true>));
25     BOOST_TEST_TRAIT_TRUE((std::is_same<mp_starts_with<mp_list<>,
26         mp_list<int> >, mp_false>));
27     BOOST_TEST_TRAIT_TRUE((std::is_same<mp_starts_with<mp_list<int>,
28         mp_list<> >, mp_true>));
29     BOOST_TEST_TRAIT_TRUE((std::is_same<mp_starts_with<mp_list<>,
30         std::tuple<int> >, mp_false>));
31     BOOST_TEST_TRAIT_TRUE((std::is_same<mp_starts_with<std::tuple<int>,
32         mp_list<> >, mp_true>));
33     BOOST_TEST_TRAIT_TRUE((std::is_same<mp_starts_with<mp_list<int>,
34         mp_list<int> >, mp_true>));
35     BOOST_TEST_TRAIT_TRUE((std::is_same<mp_starts_with<mp_list<int>,
36         mp_list<char> >, mp_false>));
37     BOOST_TEST_TRAIT_TRUE((std::is_same<mp_starts_with<std::tuple<int>,
38         mp_list<int> >, mp_true>));
39     BOOST_TEST_TRAIT_TRUE((std::is_same<mp_starts_with<mp_list<int>,
40         std::tuple<char> >, mp_false>));
41     BOOST_TEST_TRAIT_TRUE((std::is_same<mp_starts_with<mp_list<int, void>,
42         mp_list<int> >, mp_true>));
43     BOOST_TEST_TRAIT_TRUE((std::is_same<mp_starts_with<mp_list<int, void>,
44         mp_list<char> >, mp_false>));
45     BOOST_TEST_TRAIT_TRUE((std::is_same<mp_starts_with<mp_list<int>,
46         mp_list<int, void> >, mp_false>));
47     BOOST_TEST_TRAIT_TRUE((std::is_same<mp_starts_with<std::pair<int, char>,
48         mp_list<int> >, mp_true>));
49     BOOST_TEST_TRAIT_TRUE((std::is_same<mp_starts_with<mp_list<int>,
50         std::pair<int, char> >, mp_false>));
51     BOOST_TEST_TRAIT_TRUE((std::is_same<mp_starts_with<mp_list<int, void>,
52         mp_list<int, void> >, mp_true>));
53     BOOST_TEST_TRAIT_TRUE((std::is_same<mp_starts_with<mp_list<int, void>,
54         mp_list<int, int> >, mp_false>));
55     BOOST_TEST_TRAIT_TRUE((std::is_same<mp_starts_with<std::tuple<int, char>,
56         mp_list<int, char> >, mp_true>));
57     BOOST_TEST_TRAIT_TRUE((std::is_same<mp_starts_with<mp_list<int, char>,
58         std::tuple<int, int> >, mp_false>));
59     BOOST_TEST_TRAIT_TRUE((std::is_same<mp_starts_with<mp_list<int, void, int>,
60         mp_list<int, void> >, mp_true>));
61     BOOST_TEST_TRAIT_TRUE((std::is_same<mp_starts_with<mp_list<int, void, int>,
62         mp_list<int, int> >, mp_false>));
63     return boost::report_errors();
64 }
65