File tree Expand file tree Collapse file tree 2 files changed +20
-4
lines changed Expand file tree Collapse file tree 2 files changed +20
-4
lines changed Original file line number Diff line number Diff line change @@ -212,11 +212,20 @@ inline T& operator>> (object o, T& v)
212212 return v;
213213}
214214
215+ namespace detail {
216+ template <typename Stream, typename T>
217+ struct packer_serializer {
218+ static packer<Stream>& pack (packer<Stream>& o, const T& v) {
219+ v.msgpack_pack (o);
220+ return o;
221+ }
222+ };
223+ }
224+
215225template <typename Stream, typename T>
216226inline packer<Stream>& operator << (packer<Stream>& o, const T& v)
217227{
218- v.msgpack_pack (o);
219- return o;
228+ return detail::packer_serializer<Stream, T>::pack (o, v);
220229}
221230
222231template <typename T>
Original file line number Diff line number Diff line change 4848 template < > \
4949 void operator< < (object::with_zone& o, const enum& v) \
5050 { \
51- int tmp = static_cast< enum > (v); \
52- o < < tmp ; \
51+ o < < static _cast < int > (v); \
52+ } \
53+ namespace detail { \
54+ template < typename Stream > \
55+ struct packer_serializer< Stream , enum > { \
56+ static packer< Stream > & pack(packer< Stream > & o, const enum& v) { \
57+ return o < < static _cast < int > (v); \
58+ } \
59+ }; \
5360 } \
5461 }
5562
You can’t perform that action at this time.
0 commit comments