@@ -474,6 +474,28 @@ BOOST_AUTO_TEST_CASE(variant_pack_unpack_as) {
474
474
oh.get ().as <std::variant<bool , int , float , double > >();
475
475
BOOST_CHECK (val1 == val2);
476
476
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
+ }
477
499
}
478
500
479
501
BOOST_AUTO_TEST_CASE (variant_with_zone) {
0 commit comments