@@ -32,11 +32,13 @@ template <
32
32
typename T,
33
33
typename ... Ts,
34
34
std::size_t current_index,
35
- std::size_t ... indices>
35
+ std::size_t ... indices
36
+ >
36
37
Variant construct_variant (
37
38
std::size_t index,
38
39
msgpack::object& object,
39
- std::index_sequence<current_index, indices...>) {
40
+ std::index_sequence<current_index, indices...>
41
+ ) {
40
42
if constexpr (sizeof ...(Ts) == 0 ) {
41
43
return object.as <T>();
42
44
}
@@ -45,9 +47,10 @@ Variant construct_variant(
45
47
return object.as <T>();
46
48
}
47
49
return construct_variant<Variant, Ts...>(
48
- index,
49
- object,
50
- std::index_sequence<indices...>());
50
+ index,
51
+ object,
52
+ std::index_sequence<indices...>()
53
+ );
51
54
}
52
55
}
53
56
@@ -70,16 +73,16 @@ template <typename... Ts>
70
73
struct as <std::variant<Ts...>, typename std::enable_if<(msgpack::has_as<Ts>::value && ...)>::type> {
71
74
std::variant<Ts...> operator ()(msgpack::object const & o) const {
72
75
if ( o.type != msgpack::type::ARRAY
73
- || o.via .array .size != 2
74
- || o.via .array .ptr [0 ].type != msgpack::type::POSITIVE_INTEGER
75
- || o.via .array .ptr [0 ].via .u64 >= sizeof ...(Ts)) {
76
+ || o.via .array .size != 2
77
+ || o.via .array .ptr [0 ].type != msgpack::type::POSITIVE_INTEGER
78
+ || o.via .array .ptr [0 ].via .u64 >= sizeof ...(Ts)) {
76
79
throw msgpack::type_error{};
77
80
}
78
81
79
82
return detail::construct_variant<std::variant<Ts...>, Ts...>(
80
- o.via .array .ptr [0 ].as <std::size_t >(),
81
- o.via .array .ptr [1 ],
82
- std::make_index_sequence<sizeof ...(Ts)>()
83
+ o.via .array .ptr [0 ].as <std::size_t >(),
84
+ o.via .array .ptr [1 ],
85
+ std::make_index_sequence<sizeof ...(Ts)>()
83
86
);
84
87
}
85
88
};
@@ -88,16 +91,16 @@ template<typename... Ts>
88
91
struct convert <std::variant<Ts...>> {
89
92
msgpack::object const & operator ()(msgpack::object const & o, std::variant<Ts...>& v) const {
90
93
if ( o.type != msgpack::type::ARRAY
91
- || o.via .array .size != 2
92
- || o.via .array .ptr [0 ].type != msgpack::type::POSITIVE_INTEGER
93
- || o.via .array .ptr [0 ].via .u64 >= sizeof ...(Ts)) {
94
+ || o.via .array .size != 2
95
+ || o.via .array .ptr [0 ].type != msgpack::type::POSITIVE_INTEGER
96
+ || o.via .array .ptr [0 ].via .u64 >= sizeof ...(Ts)) {
94
97
throw msgpack::type_error{};
95
98
}
96
99
97
100
v = detail::construct_variant<std::variant<Ts...>, Ts...>(
98
- o.via .array .ptr [0 ].as <std::size_t >(),
99
- o.via .array .ptr [1 ],
100
- std::make_index_sequence<sizeof ...(Ts)>()
101
+ o.via .array .ptr [0 ].as <std::size_t >(),
102
+ o.via .array .ptr [1 ],
103
+ std::make_index_sequence<sizeof ...(Ts)>()
101
104
);
102
105
return o;
103
106
}
@@ -106,7 +109,10 @@ struct convert<std::variant<Ts...>> {
106
109
template <typename ... Ts>
107
110
struct pack <std::variant<Ts...>>{
108
111
template <typename Stream>
109
- msgpack::packer<Stream>& operator ()(msgpack::packer<Stream>& o, std::variant<Ts...> const & v) const {
112
+ msgpack::packer<Stream>& operator ()(
113
+ msgpack::packer<Stream>& o,
114
+ std::variant<Ts...> const & v
115
+ ) const {
110
116
o.pack_array (2 );
111
117
o.pack_uint64 (v.index ());
112
118
std::visit ([&o](auto const & value){o.pack (value);}, v);
@@ -117,10 +123,17 @@ struct pack<std::variant<Ts...>>{
117
123
118
124
template <typename ... Ts>
119
125
struct object_with_zone <std::variant<Ts...>> {
120
- void operator ()(msgpack::object::with_zone& o, std::variant<Ts...> const & v) const {
121
- msgpack::object *p = static_cast <msgpack::object *>(
122
- o.zone .allocate_align (sizeof (msgpack::object) * 2 ,
123
- MSGPACK_ZONE_ALIGNOF (msgpack::object)));
126
+ void operator ()(
127
+ msgpack::object::with_zone& o,
128
+ std::variant<Ts...> const & v
129
+ ) const {
130
+ msgpack::object *p =
131
+ static_cast <msgpack::object *>(
132
+ o.zone .allocate_align (
133
+ sizeof (msgpack::object) * 2 ,
134
+ MSGPACK_ZONE_ALIGNOF (msgpack::object)
135
+ )
136
+ );
124
137
125
138
o.type = msgpack::type::ARRAY;
126
139
o.via .array .size = 2 ;
0 commit comments