]>
git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/bind/test/mem_fn_noexcept_test.cpp
1 // Copyright 2001, 2002, 2020 Peter Dimov
2 // Distributed under the Boost Software License, Version 1.0.
3 // https://www.boost.org/LICENSE_1_0.txt)
5 #include <boost/mem_fn.hpp>
6 #include <boost/shared_ptr.hpp>
9 #if defined(BOOST_NO_CXX11_NOEXCEPT)
19 mutable unsigned int hash
;
23 int f0() noexcept
{ f1(17); return 0; }
24 int g0() const noexcept
{ g1(17); return 0; }
26 int f1(int a1
) noexcept
{ hash
= (hash
* 17041 + a1
) % 32768; return 0; }
27 int g1(int a1
) const noexcept
{ hash
= (hash
* 17041 + a1
* 2) % 32768; return 0; }
29 int f2(int a1
, int a2
) noexcept
{ f1(a1
); f1(a2
); return 0; }
30 int g2(int a1
, int a2
) const noexcept
{ g1(a1
); g1(a2
); return 0; }
32 int f3(int a1
, int a2
, int a3
) noexcept
{ f2(a1
, a2
); f1(a3
); return 0; }
33 int g3(int a1
, int a2
, int a3
) const noexcept
{ g2(a1
, a2
); g1(a3
); return 0; }
35 int f4(int a1
, int a2
, int a3
, int a4
) noexcept
{ f3(a1
, a2
, a3
); f1(a4
); return 0; }
36 int g4(int a1
, int a2
, int a3
, int a4
) const noexcept
{ g3(a1
, a2
, a3
); g1(a4
); return 0; }
38 int f5(int a1
, int a2
, int a3
, int a4
, int a5
) noexcept
{ f4(a1
, a2
, a3
, a4
); f1(a5
); return 0; }
39 int g5(int a1
, int a2
, int a3
, int a4
, int a5
) const noexcept
{ g4(a1
, a2
, a3
, a4
); g1(a5
); return 0; }
41 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; }
42 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; }
44 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; }
45 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; }
47 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; }
48 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; }
51 int detect_errors(bool x
)
55 std::cerr
<< "no errors detected.\n";
60 std::cerr
<< "test failed.\n";
74 boost::shared_ptr
<X
> sp(new X
);
87 mem_fn(&X::f1
)(&x
, 1);
88 mem_fn(&X::f1
)(sp
, 1);
91 mem_fn(&X::g1
)(rcx
, 1);
92 mem_fn(&X::g1
)(&x
, 1);
93 mem_fn(&X::g1
)(pcx
, 1);
94 mem_fn(&X::g1
)(sp
, 1);
96 mem_fn(&X::f2
)(x
, 1, 2);
97 mem_fn(&X::f2
)(&x
, 1, 2);
98 mem_fn(&X::f2
)(sp
, 1, 2);
100 mem_fn(&X::g2
)(x
, 1, 2);
101 mem_fn(&X::g2
)(rcx
, 1, 2);
102 mem_fn(&X::g2
)(&x
, 1, 2);
103 mem_fn(&X::g2
)(pcx
, 1, 2);
104 mem_fn(&X::g2
)(sp
, 1, 2);
106 mem_fn(&X::f3
)(x
, 1, 2, 3);
107 mem_fn(&X::f3
)(&x
, 1, 2, 3);
108 mem_fn(&X::f3
)(sp
, 1, 2, 3);
110 mem_fn(&X::g3
)(x
, 1, 2, 3);
111 mem_fn(&X::g3
)(rcx
, 1, 2, 3);
112 mem_fn(&X::g3
)(&x
, 1, 2, 3);
113 mem_fn(&X::g3
)(pcx
, 1, 2, 3);
114 mem_fn(&X::g3
)(sp
, 1, 2, 3);
116 mem_fn(&X::f4
)(x
, 1, 2, 3, 4);
117 mem_fn(&X::f4
)(&x
, 1, 2, 3, 4);
118 mem_fn(&X::f4
)(sp
, 1, 2, 3, 4);
120 mem_fn(&X::g4
)(x
, 1, 2, 3, 4);
121 mem_fn(&X::g4
)(rcx
, 1, 2, 3, 4);
122 mem_fn(&X::g4
)(&x
, 1, 2, 3, 4);
123 mem_fn(&X::g4
)(pcx
, 1, 2, 3, 4);
124 mem_fn(&X::g4
)(sp
, 1, 2, 3, 4);
126 mem_fn(&X::f5
)(x
, 1, 2, 3, 4, 5);
127 mem_fn(&X::f5
)(&x
, 1, 2, 3, 4, 5);
128 mem_fn(&X::f5
)(sp
, 1, 2, 3, 4, 5);
130 mem_fn(&X::g5
)(x
, 1, 2, 3, 4, 5);
131 mem_fn(&X::g5
)(rcx
, 1, 2, 3, 4, 5);
132 mem_fn(&X::g5
)(&x
, 1, 2, 3, 4, 5);
133 mem_fn(&X::g5
)(pcx
, 1, 2, 3, 4, 5);
134 mem_fn(&X::g5
)(sp
, 1, 2, 3, 4, 5);
136 mem_fn(&X::f6
)(x
, 1, 2, 3, 4, 5, 6);
137 mem_fn(&X::f6
)(&x
, 1, 2, 3, 4, 5, 6);
138 mem_fn(&X::f6
)(sp
, 1, 2, 3, 4, 5, 6);
140 mem_fn(&X::g6
)(x
, 1, 2, 3, 4, 5, 6);
141 mem_fn(&X::g6
)(rcx
, 1, 2, 3, 4, 5, 6);
142 mem_fn(&X::g6
)(&x
, 1, 2, 3, 4, 5, 6);
143 mem_fn(&X::g6
)(pcx
, 1, 2, 3, 4, 5, 6);
144 mem_fn(&X::g6
)(sp
, 1, 2, 3, 4, 5, 6);
146 mem_fn(&X::f7
)(x
, 1, 2, 3, 4, 5, 6, 7);
147 mem_fn(&X::f7
)(&x
, 1, 2, 3, 4, 5, 6, 7);
148 mem_fn(&X::f7
)(sp
, 1, 2, 3, 4, 5, 6, 7);
150 mem_fn(&X::g7
)(x
, 1, 2, 3, 4, 5, 6, 7);
151 mem_fn(&X::g7
)(rcx
, 1, 2, 3, 4, 5, 6, 7);
152 mem_fn(&X::g7
)(&x
, 1, 2, 3, 4, 5, 6, 7);
153 mem_fn(&X::g7
)(pcx
, 1, 2, 3, 4, 5, 6, 7);
154 mem_fn(&X::g7
)(sp
, 1, 2, 3, 4, 5, 6, 7);
156 mem_fn(&X::f8
)(x
, 1, 2, 3, 4, 5, 6, 7, 8);
157 mem_fn(&X::f8
)(&x
, 1, 2, 3, 4, 5, 6, 7, 8);
158 mem_fn(&X::f8
)(sp
, 1, 2, 3, 4, 5, 6, 7, 8);
160 mem_fn(&X::g8
)(x
, 1, 2, 3, 4, 5, 6, 7, 8);
161 mem_fn(&X::g8
)(rcx
, 1, 2, 3, 4, 5, 6, 7, 8);
162 mem_fn(&X::g8
)(&x
, 1, 2, 3, 4, 5, 6, 7, 8);
163 mem_fn(&X::g8
)(pcx
, 1, 2, 3, 4, 5, 6, 7, 8);
164 mem_fn(&X::g8
)(sp
, 1, 2, 3, 4, 5, 6, 7, 8);
166 return detect_errors(mem_fn(&X::hash
)(x
) == 17610 && mem_fn(&X::hash
)(sp
) == 2155);