]> git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/multiprecision/test/bug11922.cpp
import new upstream nautilus stable release 14.2.8
[ceph.git] / ceph / src / boost / libs / multiprecision / test / bug11922.cpp
1 ///////////////////////////////////////////////////////////////////////////////
2 // Copyright 2016 John Maddock. Distributed under the Boost
3 // Software License, Version 1.0. (See accompanying file
4 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
5
6 #include <boost/multiprecision/cpp_int.hpp>
7 #include <memory>
8
9 #if defined(__apple_build_version__) && (__clang_major__ < 9)
10 //
11 // Apples clang fails with:
12 // error: no matching function for call to '__implicit_conversion_to'
13 // Which is nothing to do with us really...
14 //
15 #define DISABLE_TEST
16 #endif
17
18 typedef boost::multiprecision::cpp_int mp_int;
19
20 #if !defined(BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS) && !defined(BOOST_NO_CXX11_DELETED_FUNCTIONS) && !defined(DISABLE_TEST)
21
22 class Int1
23 {
24 public:
25 Int1(const mp_int& i) {}
26 Int1(const Int1& i) {}
27 };
28
29 class Int2
30 {
31 public:
32 Int2(const mp_int& i) {}
33 Int2(const Int2& i) = delete;
34 };
35
36 int main()
37 {
38 using namespace boost::multiprecision;
39
40 mp_int i(10);
41 Int1 a(i + 10);
42 Int2 b(i + 20);
43
44 #ifndef BOOST_NO_CXX11_SMART_PTR
45
46 std::shared_ptr<Int1> p1 = std::make_shared<Int1>(i + 10);
47 std::shared_ptr<Int2> p2 = std::make_shared<Int2>(i + 10);
48
49 #endif
50
51 return 0;
52 }
53
54 #else
55
56 int main()
57 {
58 return 0;
59 }
60
61 #endif