10#ifndef MSGPACK_V1_TYPE_OPTIONAL_HPP
11#define MSGPACK_V1_TYPE_OPTIONAL_HPP
15#if MSGPACK_CPP_VERSION >= 201703
32#if !defined (MSGPACK_USE_CPP03)
35struct as<std::optional<T>, typename std::enable_if<msgpack::has_as<T>::value>::type> {
36 std::optional<T> operator()(msgpack::object
const& o)
const {
37 if(o.
is_nil())
return std::nullopt;
45struct convert<std::optional<T> > {
46 msgpack::object
const&
operator()(msgpack::object
const& o, std::optional<T>& v)
const {
47 if(o.
is_nil()) v = std::nullopt;
50 msgpack::adaptor::convert<T>()(o, t);
58struct pack<std::optional<T> > {
59 template <
typename Stream>
60 msgpack::packer<Stream>&
operator()(msgpack::packer<Stream>& o,
const std::optional<T>& v)
const {
68struct object<std::optional<T> > {
69 void operator()(msgpack::object& o,
const std::optional<T>& v)
const {
70 if (v) msgpack::adaptor::object<T>()(o, *v);
78 if (v) msgpack::adaptor::object_with_zone<T>()(o, *v);
packer< Stream > & pack_nil()
Packing nil.
Definition pack.hpp:1170
packer< Stream > & pack(const T &v)
Packing function template.
Definition adaptor_base.hpp:22
@ NIL
Definition object_fwd_decl.hpp:28
Definition adaptor_base.hpp:15
Definition object_fwd_decl.hpp:61
Definition adaptor_base.hpp:27
msgpack::object const & operator()(msgpack::object const &o, T &v) const
Definition object.hpp:646
Definition adaptor_base.hpp:43
void operator()(msgpack::object::with_zone &o, T const &v) const
Definition object.hpp:662
Definition adaptor_base.hpp:38
void operator()(msgpack::object &o, T const &v) const
Definition adaptor_base.hpp:32
msgpack::packer< Stream > & operator()(msgpack::packer< Stream > &o, T const &v) const
Definition object.hpp:655
std::enable_if< msgpack::has_as< T >::value, T >::type as() const
Get value as T.
Definition object.hpp:1126
msgpack::type::object_type type
Definition object_fwd.hpp:94
object_with_zone_type with_zone
Definition object_fwd.hpp:225
bool is_nil() const
Cheking nil.
Definition object_fwd.hpp:101
#define MSGPACK_API_VERSION_NAMESPACE(ns)
Definition versioning.hpp:66