1// stl_byval.cpp
2///
3// (C) Copyright Eric Niebler 2004.
4// Use, modification and distribution are subject to the
5// Boost Software License, Version 1.0. (See accompanying file
6// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
7
8/*
9 Revision history:
10 25 August 2005 : Initial version.
11*/
12
13#include <list>
14#include <boost/core/lightweight_test.hpp>
15#include <boost/foreach.hpp>
16
17///////////////////////////////////////////////////////////////////////////////
18// define the container types, used by utility.hpp to generate the helper functions
19typedef std::list<int> foreach_container_type;
20typedef std::list<int> const foreach_const_container_type;
21typedef int foreach_value_type;
22typedef int &foreach_reference_type;
23typedef int const &foreach_const_reference_type;
24
25#include "./utility.hpp"
26
27///////////////////////////////////////////////////////////////////////////////
28// initialize a std::list<int>
29std::list<int> make_list()
30{
31 std::list<int> l;
32 l.push_back(x: 1);
33 l.push_back(x: 2);
34 l.push_back(x: 3);
35 l.push_back(x: 4);
36 l.push_back(x: 5);
37 return l;
38}
39
40///////////////////////////////////////////////////////////////////////////////
41// define some containers
42//
43std::list<int> my_list = make_list();
44std::list<int> const &my_const_list = my_list;
45
46///////////////////////////////////////////////////////////////////////////////
47// test_main
48//
49int main()
50{
51 boost::mpl::false_ *p = BOOST_FOREACH_IS_LIGHTWEIGHT_PROXY(my_list);
52 (void)p;
53
54 // non-const containers by value
55 BOOST_TEST(sequence_equal_byval_n_r(my_list, "\5\4\3\2\1"));
56
57 // const containers by value
58 BOOST_TEST(sequence_equal_byval_c_r(my_const_list, "\5\4\3\2\1"));
59
60 return boost::report_errors();
61}
62

source code of boost/libs/foreach/test/stl_byval_r.cpp