]>
git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/bind/test/mem_fn_rv_test.cpp
1 #include <boost/config.hpp>
3 #if defined(BOOST_MSVC)
4 #pragma warning(disable: 4786) // identifier truncated in debug info
5 #pragma warning(disable: 4710) // function not inlined
6 #pragma warning(disable: 4711) // function selected for automatic inline expansion
7 #pragma warning(disable: 4514) // unreferenced inline removed
11 // mem_fn_test.cpp - mem_fn.hpp with rvalues
13 // Copyright (c) 2001, 2002 Peter Dimov and Multi Media Ltd.
14 // Copyright (c) 2005 Peter Dimov
16 // Distributed under the Boost Software License, Version 1.0. (See
17 // accompanying file LICENSE_1_0.txt or copy at
18 // http://www.boost.org/LICENSE_1_0.txt)
21 #include <boost/mem_fn.hpp>
22 #include <boost/shared_ptr.hpp>
24 #if defined(BOOST_MSVC) && (BOOST_MSVC < 1300)
25 #pragma warning(push, 3)
30 #if defined(BOOST_MSVC) && (BOOST_MSVC < 1300)
34 unsigned int hash
= 0;
38 int f0() { f1(17); return 0; }
39 int g0() const { g1(17); return 0; }
41 int f1(int a1
) { hash
= (hash
* 17041 + a1
) % 32768; return 0; }
42 int g1(int a1
) const { hash
= (hash
* 17041 + a1
* 2) % 32768; return 0; }
44 int f2(int a1
, int a2
) { f1(a1
); f1(a2
); return 0; }
45 int g2(int a1
, int a2
) const { g1(a1
); g1(a2
); return 0; }
47 int f3(int a1
, int a2
, int a3
) { f2(a1
, a2
); f1(a3
); return 0; }
48 int g3(int a1
, int a2
, int a3
) const { g2(a1
, a2
); g1(a3
); return 0; }
50 int f4(int a1
, int a2
, int a3
, int a4
) { f3(a1
, a2
, a3
); f1(a4
); return 0; }
51 int g4(int a1
, int a2
, int a3
, int a4
) const { g3(a1
, a2
, a3
); g1(a4
); return 0; }
53 int f5(int a1
, int a2
, int a3
, int a4
, int a5
) { f4(a1
, a2
, a3
, a4
); f1(a5
); return 0; }
54 int g5(int a1
, int a2
, int a3
, int a4
, int a5
) const { g4(a1
, a2
, a3
, a4
); g1(a5
); return 0; }
56 int f6(int a1
, int a2
, int a3
, int a4
, int a5
, int a6
) { f5(a1
, a2
, a3
, a4
, a5
); f1(a6
); return 0; }
57 int g6(int a1
, int a2
, int a3
, int a4
, int a5
, int a6
) const { g5(a1
, a2
, a3
, a4
, a5
); g1(a6
); return 0; }
59 int f7(int a1
, int a2
, int a3
, int a4
, int a5
, int a6
, int a7
) { f6(a1
, a2
, a3
, a4
, a5
, a6
); f1(a7
); return 0; }
60 int g7(int a1
, int a2
, int a3
, int a4
, int a5
, int a6
, int a7
) const { g6(a1
, a2
, a3
, a4
, a5
, a6
); g1(a7
); return 0; }
62 int f8(int a1
, int a2
, int a3
, int a4
, int a5
, int a6
, int a7
, int a8
) { f7(a1
, a2
, a3
, a4
, a5
, a6
, a7
); f1(a8
); return 0; }
63 int g8(int a1
, int a2
, int a3
, int a4
, int a5
, int a6
, int a7
, int a8
) const { g7(a1
, a2
, a3
, a4
, a5
, a6
, a7
); g1(a8
); return 0; }
66 int detect_errors(bool x
)
70 std::cerr
<< "no errors detected.\n";
75 std::cerr
<< "test failed.\n";
80 boost::shared_ptr
<X
> make()
82 return boost::shared_ptr
<X
>( new X
);
89 mem_fn(&X::f0
)( make() );
90 mem_fn(&X::g0
)( make() );
92 mem_fn(&X::f1
)( make(), 1 );
93 mem_fn(&X::g1
)( make(), 1 );
95 mem_fn(&X::f2
)( make(), 1, 2 );
96 mem_fn(&X::g2
)( make(), 1, 2 );
98 mem_fn(&X::f3
)( make(), 1, 2, 3 );
99 mem_fn(&X::g3
)( make(), 1, 2, 3 );
101 mem_fn(&X::f4
)( make(), 1, 2, 3, 4 );
102 mem_fn(&X::g4
)( make(), 1, 2, 3, 4 );
104 mem_fn(&X::f5
)( make(), 1, 2, 3, 4, 5 );
105 mem_fn(&X::g5
)( make(), 1, 2, 3, 4, 5 );
107 mem_fn(&X::f6
)( make(), 1, 2, 3, 4, 5, 6 );
108 mem_fn(&X::g6
)( make(), 1, 2, 3, 4, 5, 6 );
110 mem_fn(&X::f7
)( make(), 1, 2, 3, 4, 5, 6, 7 );
111 mem_fn(&X::g7
)( make(), 1, 2, 3, 4, 5, 6, 7 );
113 mem_fn(&X::f8
)( make(), 1, 2, 3, 4, 5, 6, 7, 8 );
114 mem_fn(&X::g8
)( make(), 1, 2, 3, 4, 5, 6, 7, 8 );
116 return detect_errors( hash
== 2155 );