MessagePack for C++
Toggle main menu visibility
Loading...
Searching...
No Matches
msgpack
v1
adaptor
cpp11
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
14
#include "
msgpack/versioning.hpp
"
15
#include "
msgpack/adaptor/adaptor_base.hpp
"
16
#include "
msgpack/object.hpp
"
17
#include "
msgpack/adaptor/check_container_size.hpp
"
18
19
#include <memory>
20
#include <type_traits>
21
22
namespace
msgpack
{
23
25
MSGPACK_API_VERSION_NAMESPACE
(v1) {
27
28
namespace
adaptor
{
29
30
template
<
typename
T>
31
struct
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
38
template
<
typename
T>
39
struct
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
47
template
<
typename
T>
48
struct
object
<std::reference_wrapper<T> > {
49
void
operator()
(
msgpack::object
& o,
const
std::reference_wrapper<T>& v)
const
{
50
msgpack::adaptor::object<typename std::remove_const<T>::type
>()(o, v.get());
51
}
52
};
53
54
template
<
typename
T>
55
struct
object_with_zone
<std::reference_wrapper<T>> {
56
void
operator()
(
msgpack::object::with_zone
& o,
const
std::reference_wrapper<T>& v)
const
{
57
msgpack::adaptor::object_with_zone<typename std::remove_const<T>::type
>()(o, v.get());
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
adaptor_base.hpp
check_container_size.hpp
msgpack::packer
The class template that supports continuous packing.
Definition
pack.hpp:33
msgpack::packer::pack
packer< Stream > & pack(const T &v)
Packing function template.
msgpack::adaptor
Definition
adaptor_base.hpp:22
msgpack
Definition
adaptor_base.hpp:15
object.hpp
msgpack::adaptor::convert< std::reference_wrapper< T > >::operator()
msgpack::object const & operator()(msgpack::object const &o, std::reference_wrapper< T > &v) const
Definition
reference_wrapper.hpp:32
msgpack::adaptor::convert
Definition
adaptor_base.hpp:27
msgpack::adaptor::object< std::reference_wrapper< T > >::operator()
void operator()(msgpack::object &o, const std::reference_wrapper< T > &v) const
Definition
reference_wrapper.hpp:49
msgpack::adaptor::object_with_zone< std::reference_wrapper< T > >::operator()
void operator()(msgpack::object::with_zone &o, const std::reference_wrapper< T > &v) const
Definition
reference_wrapper.hpp:56
msgpack::adaptor::object_with_zone
Definition
adaptor_base.hpp:43
msgpack::adaptor::object
Definition
adaptor_base.hpp:38
msgpack::adaptor::pack< std::reference_wrapper< T > >::operator()
msgpack::packer< Stream > & operator()(msgpack::packer< Stream > &o, const std::reference_wrapper< T > &v) const
Definition
reference_wrapper.hpp:41
msgpack::adaptor::pack
Definition
adaptor_base.hpp:32
msgpack::object
Object class that corresponding to MessagePack format object.
Definition
object_fwd.hpp:77
msgpack::object::with_zone
object_with_zone_type with_zone
Definition
object_fwd.hpp:225
MSGPACK_API_VERSION_NAMESPACE
#define MSGPACK_API_VERSION_NAMESPACE(ns)
Definition
versioning.hpp:66
versioning.hpp
Generated by
1.17.0