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()15int 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