int main() { { using V = std::variant<int, ConstexprTestTypes::NoCtors>; constexpr V v; static_assert(v.index() == 0, ""); } { using V = std::variant<int, long>; constexpr V v(std::in_place_index<1>); static_assert(v.index() == 1, ""); } { using V = std::variant<int, std::string>; V v("abc"); assert(v.index() == 1); v = 42; assert(v.index() == 0); } #ifndef TEST_HAS_NO_EXCEPTIONS { using V = std::variant<int, MakeEmptyT>; V v; assert(v.index() == 0); makeEmpty(v); assert(v.index() == std::variant_npos); } #endif }
void test_default_ctor_basic() { { std::variant<int> v; assert(v.index() == 0); assert(std::get<0>(v) == 0); } { std::variant<int, long> v; assert(v.index() == 0); assert(std::get<0>(v) == 0); } { using V = std::variant<int, long>; constexpr V v; static_assert(v.index() == 0, ""); static_assert(std::get<0>(v) == 0, ""); } { using V = std::variant<int, long>; constexpr V v; static_assert(v.index() == 0, ""); static_assert(std::get<0>(v) == 0, ""); } }