• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 
2 // Copyright 2017 Peter Dimov.
3 //
4 // Distributed under the Boost Software License, Version 1.0.
5 //
6 // See accompanying file LICENSE_1_0.txt or copy at
7 // http://www.boost.org/LICENSE_1_0.txt
8 
9 #include <boost/variant2/variant.hpp>
10 
11 using namespace boost::variant2;
12 
13 #define STATIC_ASSERT(...) static_assert(__VA_ARGS__, #__VA_ARGS__)
14 
main()15 int main()
16 {
17     {
18         constexpr variant<int> v;
19 
20         STATIC_ASSERT( v.index() == 0 );
21         STATIC_ASSERT( get<0>(v) == 0 );
22     }
23 
24     {
25         constexpr variant<int const> v;
26 
27         STATIC_ASSERT( v.index() == 0 );
28         STATIC_ASSERT( get<0>(v) == 0 );
29     }
30 
31     {
32         constexpr variant<int, float> v;
33 
34         STATIC_ASSERT( v.index() == 0 );
35         STATIC_ASSERT( get<0>(v) == 0 );
36     }
37 
38     {
39         constexpr variant<int, int, float> v;
40 
41         STATIC_ASSERT( v.index() == 0 );
42         STATIC_ASSERT( get<0>(v) == 0 );
43     }
44 
45     {
46         constexpr variant<int, float, float> v;
47 
48         STATIC_ASSERT( v.index() == 0 );
49         STATIC_ASSERT( get<0>(v) == 0 );
50     }
51 }
52