]> git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/core/test/alloc_construct_throws_test.cpp
import new upstream nautilus stable release 14.2.8
[ceph.git] / ceph / src / boost / libs / core / test / alloc_construct_throws_test.cpp
1 /*
2 Copyright 2019 Glen Joseph Fernandes
3 (glenjofe@gmail.com)
4
5 Distributed under the Boost Software License, Version 1.0.
6 (http://www.boost.org/LICENSE_1_0.txt)
7 */
8 #include <boost/core/alloc_construct.hpp>
9 #include <boost/core/default_allocator.hpp>
10 #include <boost/core/lightweight_test.hpp>
11
12 class type {
13 public:
14 type() {
15 if (count == 4) {
16 throw true;
17 }
18 ++count;
19 }
20
21 ~type() {
22 --count;
23 }
24
25 static int count;
26
27 private:
28 type(const type&);
29 type& operator=(const type&);
30 };
31
32 int type::count = 0;
33
34 int main()
35 {
36 boost::default_allocator<type> a;
37 type* p = a.allocate(5);
38 try {
39 boost::alloc_construct_n(a, p, 5);
40 BOOST_ERROR("construct_n did not throw");
41 } catch (...) {
42 BOOST_TEST_EQ(type::count, 0);
43 }
44 a.deallocate(p, 5);
45 return boost::report_errors();
46 }