]>
git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/variant2/test/variant_get_by_index_cx.cpp
2 // Copyright 2017 Peter Dimov.
4 // Distributed under the Boost Software License, Version 1.0.
6 // See accompanying file LICENSE_1_0.txt or copy at
7 // http://www.boost.org/LICENSE_1_0.txt
9 #include <boost/variant2/variant.hpp>
10 #include <boost/config.hpp>
12 using namespace boost::variant2
;
14 #define STATIC_ASSERT(...) static_assert(__VA_ARGS__, #__VA_ARGS__)
16 #if BOOST_WORKAROUND(BOOST_GCC, < 50000)
17 # define STATIC_ASSERT_IF(...)
19 # define STATIC_ASSERT_IF(...) static_assert(__VA_ARGS__, #__VA_ARGS__)
25 constexpr variant
<int> v
;
27 STATIC_ASSERT( get
<0>(v
) == 0 );
29 STATIC_ASSERT_IF( get_if
<0>(&v
) == &get
<0>(v
) );
33 constexpr variant
<int> v( 1 );
35 STATIC_ASSERT( get
<0>(v
) == 1 );
37 STATIC_ASSERT_IF( get_if
<0>(&v
) == &get
<0>(v
) );
41 constexpr variant
<int, float> v
;
43 STATIC_ASSERT( get
<0>(v
) == 0 );
45 STATIC_ASSERT_IF( get_if
<0>(&v
) == &get
<0>(v
) );
46 STATIC_ASSERT_IF( get_if
<1>(&v
) == nullptr );
50 constexpr variant
<int, float> v( 1 );
52 STATIC_ASSERT( get
<0>(v
) == 1 );
54 STATIC_ASSERT_IF( get_if
<0>(&v
) == &get
<0>(v
) );
55 STATIC_ASSERT_IF( get_if
<1>(&v
) == nullptr );
59 constexpr variant
<int, float> v( 3.14f
);
61 STATIC_ASSERT( get
<1>(v
) == 3.14f
);
63 STATIC_ASSERT_IF( get_if
<0>(&v
) == nullptr );
64 STATIC_ASSERT_IF( get_if
<1>(&v
) == &get
<1>(v
) );
68 constexpr variant
<int, float, float> v
;
70 STATIC_ASSERT( get
<0>(v
) == 0 );
72 STATIC_ASSERT_IF( get_if
<0>(&v
) == &get
<0>(v
) );
73 STATIC_ASSERT_IF( get_if
<1>(&v
) == nullptr );
74 STATIC_ASSERT_IF( get_if
<2>(&v
) == nullptr );
78 constexpr variant
<int, float, float> v( 1 );
80 STATIC_ASSERT( get
<0>(v
) == 1 );
82 STATIC_ASSERT_IF( get_if
<0>(&v
) == &get
<0>(v
) );
83 STATIC_ASSERT_IF( get_if
<1>(&v
) == nullptr );
84 STATIC_ASSERT_IF( get_if
<2>(&v
) == nullptr );
88 constexpr variant
<int, int, float> v( 3.14f
);
90 STATIC_ASSERT( get
<2>(v
) == 3.14f
);
92 STATIC_ASSERT_IF( get_if
<0>(&v
) == nullptr );
93 STATIC_ASSERT_IF( get_if
<1>(&v
) == nullptr );
94 STATIC_ASSERT_IF( get_if
<2>(&v
) == &get
<2>(v
) );