1// Copyright 2024 Peter Dimov.
2// Distributed under the Boost Software License, Version 1.0.
3// https://www.boost.org/LICENSE_1_0.txt
4
5#include <boost/variant2/variant.hpp>
6#include <boost/core/lightweight_test.hpp>
7
8struct expr: boost::variant2::variant<bool, int, double>
9{
10 using variant::variant;
11};
12
13int main()
14{
15 using boost::variant2::get;
16
17 {
18 expr v{ true };
19
20 BOOST_TEST_EQ( v.index(), 0 );
21 BOOST_TEST_EQ( get<0>(v), true );
22 }
23
24 {
25 expr v{ 2 };
26
27 BOOST_TEST_EQ( v.index(), 1 );
28 BOOST_TEST_EQ( get<1>(v), 2 );
29 }
30
31 {
32 expr v{ 3.0 };
33
34 BOOST_TEST_EQ( v.index(), 2 );
35 BOOST_TEST_EQ( get<2>(v), 3.0 );
36 }
37
38 {
39 expr v( true );
40
41 BOOST_TEST_EQ( v.index(), 0 );
42 BOOST_TEST_EQ( get<0>(v), true );
43 }
44
45 {
46 expr v( 2 );
47
48 BOOST_TEST_EQ( v.index(), 1 );
49 BOOST_TEST_EQ( get<1>(v), 2 );
50 }
51
52 {
53 expr v( 3.0 );
54
55 BOOST_TEST_EQ( v.index(), 2 );
56 BOOST_TEST_EQ( get<2>(v), 3.0 );
57 }
58
59 return boost::report_errors();
60}
61

source code of boost/libs/variant2/test/variant_derived_construct2.cpp