10 #ifndef MSGPACK_V1_CPP11_MSGPACK_TUPLE_DECL_HPP
11 #define MSGPACK_V1_CPP11_MSGPACK_TUPLE_DECL_HPP
28 using std::tuple_size;
29 using std::tuple_element;
30 using std::uses_allocator;
34 template <
class... Types>
35 class tuple :
public std::tuple<Types...> {
37 using base = std::tuple<Types...>;
42 template<
typename... OtherTypes>
43 tuple(OtherTypes&&... other):
base(std::forward<OtherTypes>(other)...) {}
45 template<
typename... OtherTypes>
47 template<
typename... OtherTypes>
53 template<
typename... OtherTypes>
55 *
static_cast<base*
>(
this) =
static_cast<std::tuple<OtherTypes...
> const&>(other);
58 template<
typename... OtherTypes>
60 *
static_cast<base*
>(
this) =
static_cast<std::tuple<OtherTypes...
> &&>(other);
64 template<std::
size_t I>
66 get() & noexcept {
return std::get<I>(
static_cast<base&
>(*
this)); }
68 template<std::
size_t I>
70 get() const& noexcept {
return std::get<I>(
static_cast<base const&
>(*
this)); }
72 template<std::
size_t I>
74 get() && noexcept {
return std::get<I>(
static_cast<base&&
>(*
this)); }
76 std::size_t
size()
const {
return sizeof...(Types); }
79 template <
class... Args>
82 template<
class... Args>
85 template <
class... Tuples>
88 std::tuple_cat(std::forward<
typename std::remove_reference<Tuples>::type::base>(args)...)
91 template <
class... Args>
92 tuple<Args&...>
tie(Args&... args);
97 template <
typename Stream,
typename Tuple, std::
size_t N>
98 struct MsgpackTuplePacker;
101 template <
typename... Args>
102 struct MsgpackTupleAs;
104 template <
typename T,
typename... Args>
105 struct MsgpackTupleAsImpl;
107 template <
typename Tuple, std::
size_t N>
108 struct MsgpackTupleConverter;
111 template <
typename Tuple, std::
size_t N>
112 struct MsgpackTupleToObjectWithZone;
Definition: cpp11_msgpack_tuple_decl.hpp:35
tuple_element< I, base >::type & get() &noexcept
Definition: cpp11_msgpack_tuple_decl.hpp:66
tuple(tuple const &)=default
tuple_element< I, base >::type const & get() const &noexcept
Definition: cpp11_msgpack_tuple_decl.hpp:70
std::size_t size() const
Definition: cpp11_msgpack_tuple_decl.hpp:76
tuple & operator=(tuple< OtherTypes... > const &other)
Definition: cpp11_msgpack_tuple_decl.hpp:54
tuple & operator=(tuple const &)=default
tuple & operator=(tuple &&)=default
tuple(tuple< OtherTypes... > const &other)
Definition: cpp11_msgpack_tuple_decl.hpp:46
tuple_element< I, base >::type && get() &&noexcept
Definition: cpp11_msgpack_tuple_decl.hpp:74
tuple & operator=(tuple< OtherTypes... > &&other)
Definition: cpp11_msgpack_tuple_decl.hpp:59
tuple(tuple< OtherTypes... > &&other)
Definition: cpp11_msgpack_tuple_decl.hpp:48
tuple(OtherTypes &&... other)
Definition: cpp11_msgpack_tuple_decl.hpp:43
std::tuple< Types... > base
Definition: cpp11_msgpack_tuple_decl.hpp:37
tuple< Args &... > tie(Args &... args)
Definition: cpp11_msgpack_tuple.hpp:44
tuple make_tuple()
Definition: cpp03_msgpack_tuple.hpp:10408
auto tuple_cat(Tuples &&... args) -> decltype(std::tuple_cat(std::forward< typename std::remove_reference< Tuples >::type::base >(args)...))
Definition: cpp11_msgpack_tuple.hpp:36
tuple< Args &&... > forward_as_tuple(Args &&... args) noexcept
Definition: cpp11_msgpack_tuple.hpp:31
Definition: adaptor_base.hpp:15
Definition: cpp03_msgpack_tuple_decl.hpp:35
#define MSGPACK_API_VERSION_NAMESPACE(ns)
Definition: versioning.hpp:66