1 // Copyright Louis Dionne 2013-2017 2 // Distributed under the Boost Software License, Version 1.0. 3 // (See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt) 4 5 #include <boost/hana/assert.hpp> 6 #include <boost/hana/at.hpp> 7 #include <boost/hana/equal.hpp> 8 #include <boost/hana/experimental/view.hpp> 9 #include <boost/hana/integral_constant.hpp> 10 11 #include <laws/base.hpp> 12 #include <support/seq.hpp> 13 namespace hana = boost::hana; 14 using hana::test::ct_eq; 15 16 main()17 int main() { 18 auto container = ::seq; 19 20 { 21 auto storage1 = container(ct_eq<0>{}); 22 auto storage2 = container(); 23 auto joined = hana::experimental::joined(storage1, storage2); 24 BOOST_HANA_CONSTANT_CHECK(hana::equal( 25 hana::at(joined, hana::size_c<0>), 26 ct_eq<0>{} 27 )); 28 }{ 29 auto storage1 = container(); 30 auto storage2 = container(ct_eq<0>{}); 31 auto joined = hana::experimental::joined(storage1, storage2); 32 BOOST_HANA_CONSTANT_CHECK(hana::equal( 33 hana::at(joined, hana::size_c<0>), 34 ct_eq<0>{} 35 )); 36 } 37 38 { 39 auto storage1 = container(ct_eq<0>{}, ct_eq<1>{}); 40 auto storage2 = container(); 41 auto joined = hana::experimental::joined(storage1, storage2); 42 BOOST_HANA_CONSTANT_CHECK(hana::equal( 43 hana::at(joined, hana::size_c<0>), 44 ct_eq<0>{} 45 )); 46 BOOST_HANA_CONSTANT_CHECK(hana::equal( 47 hana::at(joined, hana::size_c<1>), 48 ct_eq<1>{} 49 )); 50 }{ 51 auto storage1 = container(ct_eq<0>{}); 52 auto storage2 = container(ct_eq<1>{}); 53 auto joined = hana::experimental::joined(storage1, storage2); 54 BOOST_HANA_CONSTANT_CHECK(hana::equal( 55 hana::at(joined, hana::size_c<0>), 56 ct_eq<0>{} 57 )); 58 BOOST_HANA_CONSTANT_CHECK(hana::equal( 59 hana::at(joined, hana::size_c<1>), 60 ct_eq<1>{} 61 )); 62 }{ 63 auto storage1 = container(); 64 auto storage2 = container(ct_eq<0>{}, ct_eq<1>{}); 65 auto joined = hana::experimental::joined(storage1, storage2); 66 BOOST_HANA_CONSTANT_CHECK(hana::equal( 67 hana::at(joined, hana::size_c<0>), 68 ct_eq<0>{} 69 )); 70 BOOST_HANA_CONSTANT_CHECK(hana::equal( 71 hana::at(joined, hana::size_c<1>), 72 ct_eq<1>{} 73 )); 74 } 75 76 { 77 auto storage1 = container(ct_eq<0>{}, ct_eq<1>{}); 78 auto storage2 = container(ct_eq<2>{}, ct_eq<3>{}); 79 auto joined = hana::experimental::joined(storage1, storage2); 80 BOOST_HANA_CONSTANT_CHECK(hana::equal( 81 hana::at(joined, hana::size_c<0>), 82 ct_eq<0>{} 83 )); 84 BOOST_HANA_CONSTANT_CHECK(hana::equal( 85 hana::at(joined, hana::size_c<1>), 86 ct_eq<1>{} 87 )); 88 BOOST_HANA_CONSTANT_CHECK(hana::equal( 89 hana::at(joined, hana::size_c<2>), 90 ct_eq<2>{} 91 )); 92 BOOST_HANA_CONSTANT_CHECK(hana::equal( 93 hana::at(joined, hana::size_c<3>), 94 ct_eq<3>{} 95 )); 96 } 97 } 98