Go to the documentation of this file.
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() & {
return std::get<I>(*
this); }
68 template< std::
size_t I>
70 get() const& {
return std::get<I>(*
this); }
72 template< std::
size_t I>
74 get() && {
return std::get<I>(*
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;
120 #endif // MSGPACK_V1_CPP11_MSGPACK_TUPLE_DECL_HPP
tuple< Args &... > tie(Args &... args)
Definition: cpp11_msgpack_tuple.hpp:44
tuple & operator=(tuple const &)=default
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_element< I, base >::type && get() &&
Definition: cpp11_msgpack_tuple_decl.hpp:74
Definition: adaptor_base.hpp:15
Definition: cpp03_msgpack_tuple_decl.hpp:35
std::tuple< Types... > base
Definition: cpp11_msgpack_tuple_decl.hpp:37
#define MSGPACK_API_VERSION_NAMESPACE(ns)
Definition: versioning.hpp:58
tuple(tuple< OtherTypes... > &&other)
Definition: cpp11_msgpack_tuple_decl.hpp:48
tuple & operator=(tuple< OtherTypes... > &&other)
Definition: cpp11_msgpack_tuple_decl.hpp:59
Definition: cpp11_msgpack_tuple_decl.hpp:35
tuple(tuple const &)=default
tuple< Args &&... > forward_as_tuple(Args &&... args) noexcept
Definition: cpp11_msgpack_tuple.hpp:31
tuple(tuple< OtherTypes... > const &other)
Definition: cpp11_msgpack_tuple_decl.hpp:46
std::size_t size() const
Definition: cpp11_msgpack_tuple_decl.hpp:76
tuple_element< I, base >::type & get() &
Definition: cpp11_msgpack_tuple_decl.hpp:66
tuple_element< I, base >::type const & get() const &
Definition: cpp11_msgpack_tuple_decl.hpp:70
tuple & operator=(tuple< OtherTypes... > const &other)
Definition: cpp11_msgpack_tuple_decl.hpp:54
tuple(OtherTypes &&... other)
Definition: cpp11_msgpack_tuple_decl.hpp:43