void msgpack_object(msgpack::object* o, msgpack::zone& z) const { o->type = msgpack::type::ARRAY; o->via.array.ptr = static_cast<msgpack::object*>(z.allocate_align(sizeof(msgpack::object)*sizeof...(Args))); o->via.array.size = sizeof...(Args); define_imp<std::tuple<Args&...>, sizeof...(Args)>::object(o, z, a); }
void msgpack_object(msgpack::object* o, msgpack::zone& z) const { static_assert(sizeof...(Args) % 2 == 0, ""); o->type = msgpack::type::MAP; o->via.map.ptr = static_cast<msgpack::object_kv*>(z.allocate_align(sizeof(msgpack::object_kv)*sizeof...(Args)/2)); o->via.map.size = sizeof...(Args) / 2; define_map_imp<std::tuple<Args&...>, sizeof...(Args)>::object(o, z, a); }