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>
97 template <
typename Stream,
typename Tuple, std::
size_t N>
101 template <
typename... Args>
104 template <
typename T,
typename... Args>
107 template <
typename Tuple, std::
size_t N>
111 template <
typename Tuple, std::
size_t N>
120 #endif // MSGPACK_V1_CPP11_MSGPACK_TUPLE_DECL_HPP tuple< Args &... > tie(Args &...args)
Definition: cpp11_msgpack_tuple.hpp:44
tuple(tuple const &)=default
Definition: cpp03_msgpack_tuple_decl.hpp:35
tuple(OtherTypes &&...other)
Definition: cpp11_msgpack_tuple_decl.hpp:43
tuple(tuple< OtherTypes... > const &other)
Definition: cpp11_msgpack_tuple_decl.hpp:46
tuple & operator=(tuple< OtherTypes... > &&other)
Definition: cpp11_msgpack_tuple_decl.hpp:59
Definition: adaptor_base.hpp:15
tuple & operator=(tuple const &)=default
Definition: cpp11_msgpack_tuple.hpp:172
Definition: cpp11_msgpack_tuple.hpp:51
std::size_t size() const
Definition: cpp11_msgpack_tuple_decl.hpp:76
std::tuple< Types... > base
Definition: cpp11_msgpack_tuple_decl.hpp:37
tuple make_tuple()
Definition: cpp03_msgpack_tuple.hpp:10408
tuple & operator=(tuple< OtherTypes... > const &other)
Definition: cpp11_msgpack_tuple_decl.hpp:54
tuple(tuple< OtherTypes... > &&other)
Definition: cpp11_msgpack_tuple_decl.hpp:48
Definition: cpp11_msgpack_tuple.hpp:105
#define MSGPACK_API_VERSION_NAMESPACE(ns)
Definition: versioning.hpp:58
tuple< Args &&... > forward_as_tuple(Args &&...args) noexcept
Definition: cpp11_msgpack_tuple.hpp:31
Definition: cpp11_msgpack_tuple_decl.hpp:35
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
Definition: cpp11_msgpack_tuple.hpp:119
Definition: cpp11_msgpack_tuple.hpp:96