/*============================================================================= Copyright (c) 2001-2007 Joel de Guzman Copyright (c) 2007 Dan Marsden 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 #include #include int main() { using namespace boost::fusion; { typedef vector2 int_vector; typedef vector2 char_vector; typedef vector seqs_type; typedef zip_view view; int_vector iv(1,2); char_vector cv('a','b'); seqs_type seq(iv, unused, cv); view v(seq); BOOST_TEST(at_c<0>(front(v)) == 1); BOOST_TEST(at_c<2>(front(v)) == 'a'); BOOST_TEST(at_c<0>(back(v)) == 2); BOOST_TEST(at_c<2>(back(v)) == 'b'); typedef boost::fusion::result_of::begin::type first_iterator; typedef boost::fusion::result_of::value_of::type first_element; typedef boost::fusion::result_of::at_c::type e0; typedef boost::fusion::result_of::at_c::type e2; BOOST_MPL_ASSERT((boost::is_same)); BOOST_MPL_ASSERT((boost::is_same)); BOOST_TEST(size(front(v)) == 3); typedef boost::fusion::result_of::value_at_c::type first_value_at; typedef boost::fusion::result_of::value_at_c::type v0; typedef boost::fusion::result_of::value_at_c::type v2; BOOST_MPL_ASSERT((boost::is_same)); BOOST_MPL_ASSERT((boost::is_same)); BOOST_TEST(at_c<0>(at_c<0>(v)) == 1); BOOST_TEST(at_c<2>(at_c<0>(v)) == 'a'); } return boost::report_errors(); }