/* @copyright Louis Dionne 2015 Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt) */ #include #include #include #include #include #include #include #include using namespace boost::hana; int main() { { //! [concat] using namespace literals; BOOST_HANA_CONSTEXPR_CHECK( concat(make(1, '2'), make(3.3, 4_c)) == make(1, '2', 3.3, 4_c) ); //! [concat] }{ //! [empty] BOOST_HANA_CONSTANT_CHECK(empty() == make()); BOOST_HANA_CONSTANT_CHECK(empty() == nothing); //! [empty] }{ //! [prepend] BOOST_HANA_CONSTEXPR_CHECK(prepend(1, make()) == make(1)); BOOST_HANA_CONSTEXPR_CHECK(prepend(1, make('2', 3.3)) == make(1, '2', 3.3)); BOOST_HANA_CONSTEXPR_CHECK( prepend(1, prepend('2', prepend(3.3, make()))) == make(1, '2', 3.3) ); //! [prepend] }{ //! [append] BOOST_HANA_CONSTEXPR_CHECK(append(make(), 1) == make(1)); BOOST_HANA_CONSTEXPR_CHECK(append(make(1, '2'), 3.3) == make(1, '2', 3.3)); BOOST_HANA_CONSTEXPR_CHECK( append(append(append(make(), 1), '2'), 3.3) == make(1, '2', 3.3) ); //! [append] }{ //! [filter] BOOST_HANA_CONSTEXPR_CHECK( filter(make(1, 2.0, 3, 4.0), trait_) == make(1, 3) ); BOOST_HANA_CONSTEXPR_CHECK( filter(just(3), trait_) == just(3) ); BOOST_HANA_CONSTANT_CHECK( filter(just(3.0), trait_) == nothing ); //! [filter] }{ //! [cycle] BOOST_HANA_CONSTEXPR_CHECK( cycle(size_t<2>, make('x', 'y', 'z')) == make('x', 'y', 'z', 'x', 'y', 'z') ); //! [cycle] }{ //! [repeat] BOOST_HANA_CONSTEXPR_CHECK(repeat(size_t<2>, 'x') == make('x', 'x')); // Of course, because Maybe can hold at most one element. static_assert(repeat(size_t<2>, 'x') == just('x'), ""); //! [repeat] }{ //! [prefix] using namespace std::literals; BOOST_HANA_RUNTIME_CHECK( prefix("my"s, make("dog"s, "car"s, "house"s)) == make("my", "dog", "my", "car", "my", "house") ); //! [prefix] }{ //! [suffix] BOOST_HANA_CONSTEXPR_CHECK( suffix(0, make(1, 2, 3, 4)) == make(1, 0, 2, 0, 3, 0, 4, 0) ); //! [suffix] } }