@@ -474,6 +474,28 @@ BOOST_AUTO_TEST_CASE(variant_pack_unpack_as) {
474474 oh.get ().as <std::variant<bool , int , float , double > >();
475475 BOOST_CHECK (val1 == val2);
476476 BOOST_CHECK_THROW ((oh.get ().as <std::variant<bool >>()), msgpack::type_error);
477+
478+ {
479+ std::stringstream same_ss;
480+ std::variant<int , float , int > same_expected{std::in_place_index<2 >, 2 };
481+ msgpack::pack (same_ss, same_expected);
482+ std::string const & same_str = same_ss.str ();
483+ msgpack::object_handle same_oh =
484+ msgpack::unpack (same_str.data (), same_str.size ());
485+ std::variant<int , float , int > same_actual = same_oh->as <std::variant<int , float , int >>();
486+ BOOST_CHECK (same_expected == same_actual);
487+ }
488+
489+ {
490+ std::stringstream same_ss;
491+ std::variant<int , int > same_expected{std::in_place_index<1 >, 2 };
492+ msgpack::pack (same_ss, same_expected);
493+ std::string const & same_str = same_ss.str ();
494+ msgpack::object_handle same_oh =
495+ msgpack::unpack (same_str.data (), same_str.size ());
496+ std::variant<int , int > same_actual = same_oh->as <std::variant<int , int >>();
497+ BOOST_CHECK (same_expected == same_actual);
498+ }
477499}
478500
479501BOOST_AUTO_TEST_CASE (variant_with_zone) {
0 commit comments