diff --git a/include/msgpack/v1/adaptor/cpp17/variant.hpp b/include/msgpack/v1/adaptor/cpp17/variant.hpp index 6614fc1b..2ddb6b6e 100644 --- a/include/msgpack/v1/adaptor/cpp17/variant.hpp +++ b/include/msgpack/v1/adaptor/cpp17/variant.hpp @@ -32,11 +32,13 @@ template < typename T, typename... Ts, std::size_t current_index, - std::size_t... indices> + std::size_t... indices +> Variant construct_variant( std::size_t index, msgpack::object& object, - std::index_sequence) { + std::index_sequence +) { if constexpr(sizeof...(Ts) == 0) { return object.as(); } @@ -45,9 +47,10 @@ Variant construct_variant( return object.as(); } return construct_variant( - index, - object, - std::index_sequence()); + index, + object, + std::index_sequence() + ); } } @@ -70,16 +73,16 @@ template struct as, typename std::enable_if<(msgpack::has_as::value && ...)>::type> { std::variant operator()(msgpack::object const& o) const { if ( o.type != msgpack::type::ARRAY - || o.via.array.size != 2 - || o.via.array.ptr[0].type != msgpack::type::POSITIVE_INTEGER - || o.via.array.ptr[0].via.u64 >= sizeof...(Ts)) { + || o.via.array.size != 2 + || o.via.array.ptr[0].type != msgpack::type::POSITIVE_INTEGER + || o.via.array.ptr[0].via.u64 >= sizeof...(Ts)) { throw msgpack::type_error{}; } return detail::construct_variant, Ts...>( - o.via.array.ptr[0].as(), - o.via.array.ptr[1], - std::make_index_sequence() + o.via.array.ptr[0].as(), + o.via.array.ptr[1], + std::make_index_sequence() ); } }; @@ -88,16 +91,16 @@ template struct convert> { msgpack::object const& operator()(msgpack::object const& o, std::variant& v) const { if ( o.type != msgpack::type::ARRAY - || o.via.array.size != 2 - || o.via.array.ptr[0].type != msgpack::type::POSITIVE_INTEGER - || o.via.array.ptr[0].via.u64 >= sizeof...(Ts)) { + || o.via.array.size != 2 + || o.via.array.ptr[0].type != msgpack::type::POSITIVE_INTEGER + || o.via.array.ptr[0].via.u64 >= sizeof...(Ts)) { throw msgpack::type_error{}; } v = detail::construct_variant, Ts...>( - o.via.array.ptr[0].as(), - o.via.array.ptr[1], - std::make_index_sequence() + o.via.array.ptr[0].as(), + o.via.array.ptr[1], + std::make_index_sequence() ); return o; } @@ -106,7 +109,10 @@ struct convert> { template struct pack>{ template - msgpack::packer& operator()(msgpack::packer& o, std::variant const& v) const { + msgpack::packer& operator()( + msgpack::packer& o, + std::variant const& v + ) const { o.pack_array(2); o.pack_uint64(v.index()); std::visit([&o](auto const& value){o.pack(value);}, v); @@ -117,10 +123,17 @@ struct pack>{ template struct object_with_zone> { - void operator()(msgpack::object::with_zone& o, std::variant const& v) const { - msgpack::object *p = static_cast( - o.zone.allocate_align(sizeof(msgpack::object) * 2, - MSGPACK_ZONE_ALIGNOF(msgpack::object))); + void operator()( + msgpack::object::with_zone& o, + std::variant const& v + ) const { + msgpack::object *p = + static_cast( + o.zone.allocate_align( + sizeof(msgpack::object) * 2, + MSGPACK_ZONE_ALIGNOF(msgpack::object) + ) + ); o.type = msgpack::type::ARRAY; o.via.array.size = 2; diff --git a/test/msgpack_cpp17.cpp b/test/msgpack_cpp17.cpp index 30a76770..b20c04cc 100644 --- a/test/msgpack_cpp17.cpp +++ b/test/msgpack_cpp17.cpp @@ -464,24 +464,25 @@ BOOST_AUTO_TEST_CASE(carray_byte_object_with_zone) #if defined(MSGPACK_USE_STD_VARIANT_ADAPTOR) BOOST_AUTO_TEST_CASE(variant_pack_unpack_as) { - std::stringstream ss; - std::variant val1{1.0}; - msgpack::pack(ss, val1); - std::string const& str = ss.str(); - msgpack::object_handle oh = - msgpack::unpack(str.data(), str.size()); - std::variant val2 = oh.get().as >(); - BOOST_CHECK(val1 == val2); - BOOST_CHECK_THROW((oh.get().as>()), msgpack::type_error); + std::stringstream ss; + std::variant val1{1.0}; + msgpack::pack(ss, val1); + std::string const& str = ss.str(); + msgpack::object_handle oh = + msgpack::unpack(str.data(), str.size()); + std::variant val2 = + oh.get().as >(); + BOOST_CHECK(val1 == val2); + BOOST_CHECK_THROW((oh.get().as>()), msgpack::type_error); } BOOST_AUTO_TEST_CASE(variant_with_zone) { - msgpack::zone z; - std::variant val1{1.0}; - msgpack::object obj(val1, z); - std::variant val2 = obj.as>(); - BOOST_CHECK(val1 == val2); - BOOST_CHECK_THROW((obj.as>()), msgpack::type_error); + msgpack::zone z; + std::variant val1{1.0}; + msgpack::object obj(val1, z); + std::variant val2 = obj.as>(); + BOOST_CHECK(val1 == val2); + BOOST_CHECK_THROW((obj.as>()), msgpack::type_error); } #endif // defined(MSGPACK_USE_STD_VARIANT_ADAPTOR)