diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 index 3f3d35a..dc71979 100644 --- a/test/Jamfile.v2 +++ b/test/Jamfile.v2 @@ -27,7 +27,7 @@ run mp_rename.cpp : : : $(REQ) ; run mp_append.cpp : : : $(REQ) ; run mp_assign.cpp : : : $(REQ) ; run mp_clear.cpp : : : $(REQ) ; -#run mp_transform.cpp : : : $(REQ) ; +run mp_transform.cpp : : : $(REQ) ; run mp_fill.cpp : : : $(REQ) ; #run mp_count.cpp : : : $(REQ) ; #run mp_count_if.cpp : : : $(REQ) ; diff --git a/test/mp_transform.cpp b/test/mp_transform.cpp new file mode 100644 index 0000000..3d17a16 --- /dev/null +++ b/test/mp_transform.cpp @@ -0,0 +1,85 @@ + +// Copyright 2015 Peter Dimov. +// +// Distributed under the Boost Software License, Version 1.0. +// +// See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt + + +#include +#include +#include +#include +#include +#include + +struct X1 {}; +struct X2 {}; +struct X3 {}; +struct X4 {}; + +struct Y1 {}; +struct Y2 {}; +struct Y3 {}; +struct Y4 {}; + +struct Z1 {}; +struct Z2 {}; +struct Z3 {}; +struct Z4 {}; + +template using add_pointer = typename std::add_pointer::type; +template using is_same = typename std::is_same::type; + +int main() +{ + using boost::mp_list; + using boost::mp_transform; + + using L1 = mp_list; + + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_list, mp_list, mp_list, mp_list>>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_list, std::tuple, std::tuple, std::tuple>>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_list, std::add_pointer, std::add_pointer, std::add_pointer>>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_list>)); + + using L2 = std::tuple; + + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_list, mp_list, mp_list, mp_list>>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_list, std::tuple, std::tuple, std::tuple>>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_list, std::pair, std::pair, std::pair>>)); + + using L3 = mp_list; + + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_list, mp_list, mp_list, mp_list>>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_list, std::tuple, std::tuple, std::tuple>>)); + + // + + using L4 = std::tuple; + + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_list>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_list>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_list>)); + + // + + using L5 = std::pair; + using L6 = std::pair; + using L7 = std::pair; + + BOOST_TEST_TRAIT_TRUE((std::is_same, std::pair, mp_list>>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, std::pair, mp_list>>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, std::pair, mp_list>>)); + + BOOST_TEST_TRAIT_TRUE((std::is_same, std::pair>)); + + BOOST_TEST_TRAIT_TRUE((std::is_same, std::pair>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, std::pair>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, std::pair>)); + + // + + return boost::report_errors(); +}