diff options
Diffstat (limited to 'libs/fusion/test/algorithm/for_each.cpp')
-rw-r--r-- | libs/fusion/test/algorithm/for_each.cpp | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/libs/fusion/test/algorithm/for_each.cpp b/libs/fusion/test/algorithm/for_each.cpp new file mode 100644 index 000000000..c0bc441c5 --- /dev/null +++ b/libs/fusion/test/algorithm/for_each.cpp @@ -0,0 +1,61 @@ +/*============================================================================= + Copyright (c) 2001-2011 Joel de Guzman + + 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 <boost/detail/lightweight_test.hpp> +#include <boost/fusion/container/vector/vector.hpp> +#include <boost/fusion/adapted/mpl.hpp> +#include <boost/fusion/sequence/io/out.hpp> +#include <boost/fusion/algorithm/iteration/for_each.hpp> +#include <boost/mpl/vector_c.hpp> + +struct print +{ + template <typename T> + void operator()(T const& v) const + { + std::cout << "[ " << v << " ] "; + } +}; + +struct increment +{ + template <typename T> + void operator()(T& v) const + { + ++v; + } +}; + +int +main() +{ + using namespace boost::fusion; + using boost::mpl::vector_c; + namespace fusion = boost::fusion; + + { + typedef vector<int, char, double, char const*> vector_type; + vector_type v(1, 'x', 3.3, "Ruby"); + for_each(v, print()); + std::cout << std::endl; + } + + { + typedef vector<int, char, double, char const*> vector_type; + vector_type v(1, 'x', 3.3, "Ruby"); + for_each(v, increment()); + std::cout << v << std::endl; + } + + { + typedef vector_c<int, 2, 3, 4, 5, 6> mpl_vec; + fusion::for_each(mpl_vec(), print()); + std::cout << std::endl; + } + + return boost::report_errors(); +} + |