1 | |
---|---|
2 | // Copyright 2018 Peter Dimov. |
3 | // Distributed under the Boost Software License, Version 1.0. |
4 | |
5 | #include <boost/system/error_code.hpp> |
6 | #include <boost/config/pragma_message.hpp> |
7 | #include <boost/static_assert.hpp> |
8 | |
9 | #if !defined(BOOST_SYSTEM_HAS_CONSTEXPR) |
10 | |
11 | BOOST_PRAGMA_MESSAGE("Skipping constexpr test, BOOST_SYSTEM_HAS_CONSTEXPR isn't defined") |
12 | int main() {} |
13 | |
14 | #else |
15 | |
16 | using namespace boost::system; |
17 | |
18 | constexpr error_code ec1( 1, system_category() ); |
19 | |
20 | BOOST_STATIC_ASSERT( ec1.failed() ); |
21 | BOOST_STATIC_ASSERT( ec1 ); |
22 | BOOST_STATIC_ASSERT( !!ec1 ); |
23 | |
24 | constexpr error_code ec2( 2, generic_category() ); |
25 | |
26 | BOOST_STATIC_ASSERT( ec2.failed() ); |
27 | BOOST_STATIC_ASSERT( ec2 ); |
28 | BOOST_STATIC_ASSERT( !!ec2 ); |
29 | |
30 | constexpr error_code ec3; |
31 | |
32 | BOOST_STATIC_ASSERT( !ec3.failed() ); |
33 | BOOST_STATIC_ASSERT( ec3? false: true ); |
34 | BOOST_STATIC_ASSERT( !ec3 ); |
35 | |
36 | #if defined(__GNUC__) && __GNUC__ == 7 && __cplusplus == 201703L |
37 | |
38 | // 'cat_' is not a constant expression |
39 | |
40 | #else |
41 | |
42 | constexpr error_condition en1( 1, system_category() ); |
43 | |
44 | BOOST_STATIC_ASSERT( en1.failed() ); |
45 | BOOST_STATIC_ASSERT( en1 ); |
46 | BOOST_STATIC_ASSERT( !!en1 ); |
47 | |
48 | constexpr error_condition en2( 2, generic_category() ); |
49 | |
50 | BOOST_STATIC_ASSERT( en2.failed() ); |
51 | BOOST_STATIC_ASSERT( en2 ); |
52 | BOOST_STATIC_ASSERT( !!en2 ); |
53 | |
54 | constexpr error_condition en3; |
55 | |
56 | BOOST_STATIC_ASSERT( !en3.failed() ); |
57 | BOOST_STATIC_ASSERT( en3? false: true ); |
58 | BOOST_STATIC_ASSERT( !en3 ); |
59 | |
60 | #endif |
61 | |
62 | int main() |
63 | { |
64 | } |
65 | |
66 | #endif |
67 |