]>
git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/bind/test/bind_noexcept_mf2_test.cpp
2 // bind_noexcept_mf2_test.cpp - noexcept member functions w/ the type<> syntax
4 // Copyright 2017 Peter Dimov
6 // Distributed under the Boost Software License, Version 1.0.
7 // See accompanying file LICENSE_1_0.txt or copy at
8 // http://www.boost.org/LICENSE_1_0.txt)
11 #include <boost/bind/bind.hpp>
12 #include <boost/ref.hpp>
13 #include <boost/core/lightweight_test.hpp>
14 #include <boost/config.hpp>
16 #if defined(BOOST_NO_CXX11_NOEXCEPT)
28 mutable unsigned int hash
;
32 int f0() noexcept
{ f1(17); return 0; }
33 int g0() const noexcept
{ g1(17); return 0; }
35 int f1(int a1
) noexcept
{ hash
= (hash
* 17041 + a1
) % 32768; return 0; }
36 int g1(int a1
) const noexcept
{ hash
= (hash
* 17041 + a1
* 2) % 32768; return 0; }
38 int f2(int a1
, int a2
) noexcept
{ f1(a1
); f1(a2
); return 0; }
39 int g2(int a1
, int a2
) const noexcept
{ g1(a1
); g1(a2
); return 0; }
41 int f3(int a1
, int a2
, int a3
) noexcept
{ f2(a1
, a2
); f1(a3
); return 0; }
42 int g3(int a1
, int a2
, int a3
) const noexcept
{ g2(a1
, a2
); g1(a3
); return 0; }
44 int f4(int a1
, int a2
, int a3
, int a4
) noexcept
{ f3(a1
, a2
, a3
); f1(a4
); return 0; }
45 int g4(int a1
, int a2
, int a3
, int a4
) const noexcept
{ g3(a1
, a2
, a3
); g1(a4
); return 0; }
47 int f5(int a1
, int a2
, int a3
, int a4
, int a5
) noexcept
{ f4(a1
, a2
, a3
, a4
); f1(a5
); return 0; }
48 int g5(int a1
, int a2
, int a3
, int a4
, int a5
) const noexcept
{ g4(a1
, a2
, a3
, a4
); g1(a5
); return 0; }
50 int f6(int a1
, int a2
, int a3
, int a4
, int a5
, int a6
) noexcept
{ f5(a1
, a2
, a3
, a4
, a5
); f1(a6
); return 0; }
51 int g6(int a1
, int a2
, int a3
, int a4
, int a5
, int a6
) const noexcept
{ g5(a1
, a2
, a3
, a4
, a5
); g1(a6
); return 0; }
53 int f7(int a1
, int a2
, int a3
, int a4
, int a5
, int a6
, int a7
) noexcept
{ f6(a1
, a2
, a3
, a4
, a5
, a6
); f1(a7
); return 0; }
54 int g7(int a1
, int a2
, int a3
, int a4
, int a5
, int a6
, int a7
) const noexcept
{ g6(a1
, a2
, a3
, a4
, a5
, a6
); g1(a7
); return 0; }
56 int f8(int a1
, int a2
, int a3
, int a4
, int a5
, int a6
, int a7
, int a8
) noexcept
{ f7(a1
, a2
, a3
, a4
, a5
, a6
, a7
); f1(a8
); return 0; }
57 int g8(int a1
, int a2
, int a3
, int a4
, int a5
, int a6
, int a7
, int a8
) const noexcept
{ g7(a1
, a2
, a3
, a4
, a5
, a6
, a7
); g1(a8
); return 0; }
60 void member_function_test()
66 boost::bind(boost::type
<void>(), &X::f0
, &x
)();
67 boost::bind(boost::type
<void>(), &X::f0
, boost::ref(x
))();
69 boost::bind(boost::type
<void>(), &X::g0
, &x
)();
70 boost::bind(boost::type
<void>(), &X::g0
, x
)();
71 boost::bind(boost::type
<void>(), &X::g0
, boost::ref(x
))();
75 boost::bind(boost::type
<void>(), &X::f1
, &x
, 1)();
76 boost::bind(boost::type
<void>(), &X::f1
, boost::ref(x
), 1)();
78 boost::bind(boost::type
<void>(), &X::g1
, &x
, 1)();
79 boost::bind(boost::type
<void>(), &X::g1
, x
, 1)();
80 boost::bind(boost::type
<void>(), &X::g1
, boost::ref(x
), 1)();
84 boost::bind(boost::type
<void>(), &X::f2
, &x
, 1, 2)();
85 boost::bind(boost::type
<void>(), &X::f2
, boost::ref(x
), 1, 2)();
87 boost::bind(boost::type
<void>(), &X::g2
, &x
, 1, 2)();
88 boost::bind(boost::type
<void>(), &X::g2
, x
, 1, 2)();
89 boost::bind(boost::type
<void>(), &X::g2
, boost::ref(x
), 1, 2)();
93 boost::bind(boost::type
<void>(), &X::f3
, &x
, 1, 2, 3)();
94 boost::bind(boost::type
<void>(), &X::f3
, boost::ref(x
), 1, 2, 3)();
96 boost::bind(boost::type
<void>(), &X::g3
, &x
, 1, 2, 3)();
97 boost::bind(boost::type
<void>(), &X::g3
, x
, 1, 2, 3)();
98 boost::bind(boost::type
<void>(), &X::g3
, boost::ref(x
), 1, 2, 3)();
102 boost::bind(boost::type
<void>(), &X::f4
, &x
, 1, 2, 3, 4)();
103 boost::bind(boost::type
<void>(), &X::f4
, boost::ref(x
), 1, 2, 3, 4)();
105 boost::bind(boost::type
<void>(), &X::g4
, &x
, 1, 2, 3, 4)();
106 boost::bind(boost::type
<void>(), &X::g4
, x
, 1, 2, 3, 4)();
107 boost::bind(boost::type
<void>(), &X::g4
, boost::ref(x
), 1, 2, 3, 4)();
111 boost::bind(boost::type
<void>(), &X::f5
, &x
, 1, 2, 3, 4, 5)();
112 boost::bind(boost::type
<void>(), &X::f5
, boost::ref(x
), 1, 2, 3, 4, 5)();
114 boost::bind(boost::type
<void>(), &X::g5
, &x
, 1, 2, 3, 4, 5)();
115 boost::bind(boost::type
<void>(), &X::g5
, x
, 1, 2, 3, 4, 5)();
116 boost::bind(boost::type
<void>(), &X::g5
, boost::ref(x
), 1, 2, 3, 4, 5)();
120 boost::bind(boost::type
<void>(), &X::f6
, &x
, 1, 2, 3, 4, 5, 6)();
121 boost::bind(boost::type
<void>(), &X::f6
, boost::ref(x
), 1, 2, 3, 4, 5, 6)();
123 boost::bind(boost::type
<void>(), &X::g6
, &x
, 1, 2, 3, 4, 5, 6)();
124 boost::bind(boost::type
<void>(), &X::g6
, x
, 1, 2, 3, 4, 5, 6)();
125 boost::bind(boost::type
<void>(), &X::g6
, boost::ref(x
), 1, 2, 3, 4, 5, 6)();
129 boost::bind(boost::type
<void>(), &X::f7
, &x
, 1, 2, 3, 4, 5, 6, 7)();
130 boost::bind(boost::type
<void>(), &X::f7
, boost::ref(x
), 1, 2, 3, 4, 5, 6, 7)();
132 boost::bind(boost::type
<void>(), &X::g7
, &x
, 1, 2, 3, 4, 5, 6, 7)();
133 boost::bind(boost::type
<void>(), &X::g7
, x
, 1, 2, 3, 4, 5, 6, 7)();
134 boost::bind(boost::type
<void>(), &X::g7
, boost::ref(x
), 1, 2, 3, 4, 5, 6, 7)();
138 boost::bind(boost::type
<void>(), &X::f8
, &x
, 1, 2, 3, 4, 5, 6, 7, 8)();
139 boost::bind(boost::type
<void>(), &X::f8
, boost::ref(x
), 1, 2, 3, 4, 5, 6, 7, 8)();
141 boost::bind(boost::type
<void>(), &X::g8
, &x
, 1, 2, 3, 4, 5, 6, 7, 8)();
142 boost::bind(boost::type
<void>(), &X::g8
, x
, 1, 2, 3, 4, 5, 6, 7, 8)();
143 boost::bind(boost::type
<void>(), &X::g8
, boost::ref(x
), 1, 2, 3, 4, 5, 6, 7, 8)();
145 BOOST_TEST( x
.hash
== 23558 );
150 member_function_test();
151 return boost::report_errors();