1 #include <boost/config.hpp>
2 
3 //
4 //  bind_type_test.cpp
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.hpp>
14 #include <boost/detail/lightweight_test.hpp>
15 
16 //
17 
18 template<int I> struct X
19 {
20 };
21 
fv1(X<1>)22 void fv1( X<1> )
23 {
24 }
25 
fv2(X<1>,X<2>)26 void fv2( X<1>, X<2> )
27 {
28 }
29 
fv3(X<1>,X<2>,X<3>)30 void fv3( X<1>, X<2>, X<3> )
31 {
32 }
33 
fv4(X<1>,X<2>,X<3>,X<4>)34 void fv4( X<1>, X<2>, X<3>, X<4> )
35 {
36 }
37 
fv5(X<1>,X<2>,X<3>,X<4>,X<5>)38 void fv5( X<1>, X<2>, X<3>, X<4>, X<5> )
39 {
40 }
41 
fv6(X<1>,X<2>,X<3>,X<4>,X<5>,X<6>)42 void fv6( X<1>, X<2>, X<3>, X<4>, X<5>, X<6> )
43 {
44 }
45 
fv7(X<1>,X<2>,X<3>,X<4>,X<5>,X<6>,X<7>)46 void fv7( X<1>, X<2>, X<3>, X<4>, X<5>, X<6>, X<7> )
47 {
48 }
49 
fv8(X<1>,X<2>,X<3>,X<4>,X<5>,X<6>,X<7>,X<8>)50 void fv8( X<1>, X<2>, X<3>, X<4>, X<5>, X<6>, X<7>, X<8> )
51 {
52 }
53 
fv9(X<1>,X<2>,X<3>,X<4>,X<5>,X<6>,X<7>,X<8>,X<9>)54 void fv9( X<1>, X<2>, X<3>, X<4>, X<5>, X<6>, X<7>, X<8>, X<9> )
55 {
56 }
57 
test()58 void test()
59 {
60     boost::bind( fv1, _1 )( X<1>() );
61     boost::bind( fv2, _1, _2 )( X<1>(), X<2>() );
62     boost::bind( fv3, _1, _2, _3 )( X<1>(), X<2>(), X<3>() );
63     boost::bind( fv4, _1, _2, _3, _4 )( X<1>(), X<2>(), X<3>(), X<4>() );
64     boost::bind( fv5, _1, _2, _3, _4, _5 )( X<1>(), X<2>(), X<3>(), X<4>(), X<5>() );
65     boost::bind( fv6, _1, _2, _3, _4, _5, _6 )( X<1>(), X<2>(), X<3>(), X<4>(), X<5>(), X<6>() );
66     boost::bind( fv7, _1, _2, _3, _4, _5, _6, _7 )( X<1>(), X<2>(), X<3>(), X<4>(), X<5>(), X<6>(), X<7>() );
67     boost::bind( fv8, _1, _2, _3, _4, _5, _6, _7, _8 )( X<1>(), X<2>(), X<3>(), X<4>(), X<5>(), X<6>(), X<7>(), X<8>() );
68     boost::bind( fv9, _1, _2, _3, _4, _5, _6, _7, _8, _9 )( X<1>(), X<2>(), X<3>(), X<4>(), X<5>(), X<6>(), X<7>(), X<8>(), X<9>() );
69 }
70 
main()71 int main()
72 {
73     test();
74     return boost::report_errors();
75 }
76