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>
80 tuple<Args...> make_tuple(Args&&... args);
82 template<
class... Args>
83 tuple<Args&&...> forward_as_tuple (Args&&... args)
noexcept;
85 template <
class... Tuples>
86 auto tuple_cat(Tuples&&... args) ->
88 std::tuple_cat(std::forward<
typename std::remove_reference<Tuples>::type::base>(args)...)
91 template <
class... Args>
92 tuple<Args&...> tie(Args&... args);
97template <
typename Stream,
typename Tuple, std::
size_t N>
98struct MsgpackTuplePacker;
101template <
typename... Args>
102struct MsgpackTupleAs;
104template <
typename T,
typename... Args>
105struct MsgpackTupleAsImpl;
107template <
typename Tuple, std::
size_t N>
108struct MsgpackTupleConverter;
111template <
typename Tuple, std::
size_t N>
112struct MsgpackTupleToObjectWithZone;
Definition cpp11_msgpack_tuple_decl.hpp:35
tuple(tuple const &)=default
tuple_element< I, base >::type && get() &&noexcept
Definition cpp11_msgpack_tuple_decl.hpp:74
tuple_element< I, base >::type & get() &noexcept
Definition cpp11_msgpack_tuple_decl.hpp:66
tuple & operator=(tuple &&)=default
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(tuple< OtherTypes... > const &other)
Definition cpp11_msgpack_tuple_decl.hpp:46
tuple(tuple< OtherTypes... > &&other)
Definition cpp11_msgpack_tuple_decl.hpp:48
tuple_element< I, base >::type const & get() const &noexcept
Definition cpp11_msgpack_tuple_decl.hpp:70
tuple & operator=(tuple const &)=default
tuple(OtherTypes &&... other)
Definition cpp11_msgpack_tuple_decl.hpp:43
tuple & operator=(tuple< OtherTypes... > &&other)
Definition cpp11_msgpack_tuple_decl.hpp:59
std::tuple< Types... > base
Definition cpp11_msgpack_tuple_decl.hpp:37
Definition adaptor_base.hpp:15
Definition cpp03_msgpack_tuple_decl.hpp:35
#define MSGPACK_API_VERSION_NAMESPACE(ns)
Definition versioning.hpp:66