From 763c2613df2100d782df93675eaa421f68760c80 Mon Sep 17 00:00:00 2001 From: Dainis Jonitis Date: Mon, 27 Jul 2015 11:06:20 +0300 Subject: [PATCH] Support vectors of non-default-constructible values in c++11 mode --- include/msgpack/adaptor/vector.hpp | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/include/msgpack/adaptor/vector.hpp b/include/msgpack/adaptor/vector.hpp index 5c429a9d..69fa1026 100644 --- a/include/msgpack/adaptor/vector.hpp +++ b/include/msgpack/adaptor/vector.hpp @@ -32,6 +32,25 @@ MSGPACK_API_VERSION_NAMESPACE(v1) { namespace adaptor { +#if !defined(MSGPACK_USE_CPP03) +template +struct as> { + std::vector operator()(const msgpack::object& o) const { + if (o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); } + std::vector v; + if (o.via.array.size > 0) { + msgpack::object* p = o.via.array.ptr; + msgpack::object* const pend = o.via.array.ptr + o.via.array.size; + do { + v.emplace_back(p->as()); + ++p; + } while (p < pend); + } + return v; + } +}; +#endif + template struct convert > { msgpack::object const& operator()(msgpack::object const& o, std::vector& v) const {