1// Boost.Range library
2//
3// Copyright Neil Groves 2014. Use, modification and
4// distribution is subject to the Boost Software License, Version
5// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
6// http://www.boost.org/LICENSE_1_0.txt)
7//
8#include <boost/range/adaptor/type_erased.hpp>
9#include "type_erased_test.hpp"
10
11#include <boost/test/unit_test.hpp>
12
13#include <algorithm>
14#include <vector>
15
16namespace boost_range_adaptor_type_erased_test
17{
18 namespace
19 {
20
21void template_parameter_conversion()
22{
23 typedef boost::any_range<
24 int
25 , boost::random_access_traversal_tag
26 , int&
27 , std::ptrdiff_t
28 > source_range_type;
29
30 typedef boost::any_range<
31 int
32 , boost::single_pass_traversal_tag
33 , const int&
34 , std::ptrdiff_t
35 > target_range_type;
36
37 source_range_type source;
38
39 // Converting via construction
40 target_range_type t1(source);
41
42 // Converting via assignment
43 target_range_type t2;
44 t2 = source;
45
46 // Converting via construction to a type with a reference type
47 // that is a value
48 typedef boost::any_range<
49 int
50 , boost::single_pass_traversal_tag
51 , int
52 , std::ptrdiff_t
53 > target_range2_type;
54
55 target_range2_type t3(source);
56 target_range2_type t4;
57 t4 = source;
58}
59
60 } // anonymous namespace
61} // namespace boost_range_adaptor_type_erased_test
62
63boost::unit_test::test_suite*
64init_unit_test_suite(int argc, char* argv[])
65{
66 boost::unit_test::test_suite* test =
67 BOOST_TEST_SUITE("RangeTestSuite.adaptor.type_erased_tparam_conv");
68
69 test->add(BOOST_TEST_CASE(
70 &boost_range_adaptor_type_erased_test::template_parameter_conversion));
71
72 return test;
73}
74
75

source code of boost/libs/range/test/adaptor_test/type_erased_tparam_conv.cpp