1 | // |
---|---|
2 | // sp_constexpr_test2.cpp |
3 | // |
4 | // Copyright 2017 Peter Dimov |
5 | // |
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 |
9 | // |
10 | |
11 | #include <boost/config.hpp> |
12 | #include <boost/config/workaround.hpp> |
13 | |
14 | #define HAVE_CONSTEXPR_INIT |
15 | |
16 | #if defined( BOOST_NO_CXX11_CONSTEXPR ) |
17 | # undef HAVE_CONSTEXPR_INIT |
18 | #endif |
19 | |
20 | #if BOOST_WORKAROUND( BOOST_MSVC, < 1930 ) |
21 | # undef HAVE_CONSTEXPR_INIT |
22 | #endif |
23 | |
24 | #if defined(__clang__) && defined( BOOST_NO_CXX14_CONSTEXPR ) |
25 | # undef HAVE_CONSTEXPR_INIT |
26 | #endif |
27 | |
28 | #if !defined( HAVE_CONSTEXPR_INIT ) |
29 | |
30 | int main() |
31 | { |
32 | } |
33 | |
34 | #else |
35 | |
36 | #include <boost/shared_ptr.hpp> |
37 | #include <boost/weak_ptr.hpp> |
38 | #include <boost/enable_shared_from_this.hpp> |
39 | #include <boost/core/lightweight_test.hpp> |
40 | |
41 | struct X: public boost::enable_shared_from_this<X> |
42 | { |
43 | int v_; |
44 | |
45 | constexpr X() BOOST_NOEXCEPT: v_( 1 ) |
46 | { |
47 | } |
48 | }; |
49 | |
50 | struct Z |
51 | { |
52 | Z(); |
53 | }; |
54 | |
55 | static Z z; |
56 | static X x; |
57 | |
58 | Z::Z() |
59 | { |
60 | BOOST_TEST_EQ( x.v_, 1 ); |
61 | } |
62 | |
63 | int main() |
64 | { |
65 | return boost::report_errors(); |
66 | } |
67 | |
68 | #endif // #if defined( BOOST_NO_CXX11_CONSEXPR ) |
69 |