MessagePack for C++
Loading...
Searching...
No Matches
reference_wrapper.hpp
Go to the documentation of this file.
1//
2// MessagePack for C++ static resolution routine
3//
4// Copyright (C) 2015 KONDO Takatoshi
5//
6// Distributed under the Boost Software License, Version 1.0.
7// (See accompanying file LICENSE_1_0.txt or copy at
8// http://www.boost.org/LICENSE_1_0.txt)
9//
10
11#ifndef MSGPACK_V1_TYPE_CPP11_REFERENCE_WRAPPER_HPP
12#define MSGPACK_V1_TYPE_CPP11_REFERENCE_WRAPPER_HPP
13
16#include "msgpack/object.hpp"
18
19#include <memory>
20#include <type_traits>
21
22namespace msgpack {
23
27
28namespace adaptor {
29
30template <typename T>
31struct convert<std::reference_wrapper<T>> {
32 msgpack::object const& operator()(msgpack::object const& o, std::reference_wrapper<T>& v) const {
33 msgpack::adaptor::convert<T>()(o, v.get());
34 return o;
35 }
36};
37
38template <typename T>
39struct pack<std::reference_wrapper<T>> {
40 template <typename Stream>
41 msgpack::packer<Stream>& operator()(msgpack::packer<Stream>& o, const std::reference_wrapper<T>& v) const {
42 o.pack(v.get());
43 return o;
44 }
45};
46
47template <typename T>
48struct object<std::reference_wrapper<T> > {
49 void operator()(msgpack::object& o, const std::reference_wrapper<T>& v) const {
51 }
52};
53
54template <typename T>
55struct object_with_zone<std::reference_wrapper<T>> {
56 void operator()(msgpack::object::with_zone& o, const std::reference_wrapper<T>& v) const {
58 }
59};
60
61} // namespace adaptor
62
64} // MSGPACK_API_VERSION_NAMESPACE(v1)
66
67} // namespace msgpack
68
69#endif // MSGPACK_V1_TYPE_CPP11_REFERENCE_WRAPPER_HPP
The class template that supports continuous packing.
Definition pack.hpp:33
packer< Stream > & pack(const T &v)
Packing function template.
Definition adaptor_base.hpp:15
msgpack::object const & operator()(msgpack::object const &o, std::reference_wrapper< T > &v) const
Definition reference_wrapper.hpp:32
Definition adaptor_base.hpp:27
void operator()(msgpack::object &o, const std::reference_wrapper< T > &v) const
Definition reference_wrapper.hpp:49
void operator()(msgpack::object::with_zone &o, const std::reference_wrapper< T > &v) const
Definition reference_wrapper.hpp:56
Definition adaptor_base.hpp:43
Definition adaptor_base.hpp:38
msgpack::packer< Stream > & operator()(msgpack::packer< Stream > &o, const std::reference_wrapper< T > &v) const
Definition reference_wrapper.hpp:41
Definition adaptor_base.hpp:32
Definition object.hpp:35
Object class that corresponding to MessagePack format object.
Definition object_fwd.hpp:75
#define MSGPACK_API_VERSION_NAMESPACE(ns)
Definition versioning.hpp:66