1#include <boost/config.hpp>
2
3//
4// bind_fwd2_test.cpp - forwarding test for 2 arguments
5//
6// Copyright (c) 2015 Peter Dimov
7//
8// Distributed under the Boost Software License, Version 1.0.
9// See accompanying file LICENSE_1_0.txt or copy at
10// http://www.boost.org/LICENSE_1_0.txt
11//
12
13#include <boost/bind/bind.hpp>
14#include <boost/core/lightweight_test.hpp>
15
16using namespace boost::placeholders;
17
18//
19
20int fv1( int const & a )
21{
22 return a;
23}
24
25void fv2_1( int & a, int const & b )
26{
27 a = b;
28}
29
30void fv2_2( int const & a, int & b )
31{
32 b = a;
33}
34
35int fv2_3( int const & a, int const & b )
36{
37 return a+b;
38}
39
40void test()
41{
42 {
43 int const a = 1;
44 int r = boost::bind( f: fv1, a1: _1 )( a );
45 BOOST_TEST( r == 1 );
46 }
47
48 {
49 int r = boost::bind( f: fv1, a1: _1 )( 1 );
50 BOOST_TEST( r == 1 );
51 }
52
53 {
54 int a = 1;
55 int const b = 2;
56
57 boost::bind( f: fv2_1, a1: _1, a2: _2 )( a, b );
58
59 BOOST_TEST( a == 2 );
60 }
61
62 {
63 int a = 1;
64
65 boost::bind( f: fv2_1, a1: _1, a2: _2 )( a, 2 );
66
67 BOOST_TEST( a == 2 );
68 }
69
70 {
71 int const a = 1;
72 int b = 2;
73
74 boost::bind( f: fv2_2, a1: _1, a2: _2 )( a, b );
75
76 BOOST_TEST( b == 1 );
77 }
78
79 {
80 int b = 2;
81
82 boost::bind( f: fv2_2, a1: _1, a2: _2 )( 1, b );
83
84 BOOST_TEST( b == 1 );
85 }
86
87 {
88 int const a = 1;
89 int const b = 2;
90
91 int r = boost::bind( f: fv2_3, a1: _1, a2: _2 )( a, b );
92
93 BOOST_TEST( r == 3 );
94 }
95
96 {
97 int const a = 1;
98
99 int r = boost::bind( f: fv2_3, a1: _1, a2: _2 )( a, 2 );
100
101 BOOST_TEST( r == 3 );
102 }
103
104 {
105 int const b = 2;
106
107 int r = boost::bind( f: fv2_3, a1: _1, a2: _2 )( 1, b );
108
109 BOOST_TEST( r == 3 );
110 }
111
112 {
113 int r = boost::bind( f: fv2_3, a1: _1, a2: _2 )( 1, 2 );
114
115 BOOST_TEST( r == 3 );
116 }
117}
118
119int main()
120{
121 test();
122 return boost::report_errors();
123}
124

source code of boost/libs/bind/test/bind_fwd2_test.cpp