10template<
typename... Ts>
struct tuple;
17template<
typename Head,
typename... Tail>
24 tuple(
const Head& h,
const Tail&...
t)
35template<
typename... Ts>
39template<
size_t I,
typename Tuple>
42template<
typename Head,
typename... Tail>
47template<
size_t I,
typename Head,
typename... Tail>
52template<
size_t I,
typename Head,
typename... Tail>
58template<
size_t I,
typename Head,
typename... Tail>
59typename enable_if<I != 0,
typename tuple_element<I, tuple<Head, Tail...>>::type&>::type
61 return get<I-1>(
t.tail);
65template<
size_t I,
typename Head,
typename... Tail>
66typename enable_if<I == 0, const Head&>::type
71template<
size_t I,
typename Head,
typename... Tail>
72typename enable_if<I != 0,
const typename tuple_element<I, tuple<Head, Tail...>>::type&>::type
74 return get<I-1>(
t.tail);
78template<
size_t I,
typename Head,
typename... Tail>
79typename enable_if<I == 0, Head&&>::type
84template<
size_t I,
typename Head,
typename... Tail>
85typename enable_if<I != 0,
typename tuple_element<I, tuple<Head, Tail...>>::type&&>::type
91template<
typename... Ts>
92tuple<typename fl::decay<Ts>::type...>
constexpr remove_reference< T >::type && move(T &&t) noexcept
tuple< typename fl::decay< Ts >::type... > make_tuple(Ts &&... args)
pair_element< I, T1, T2 >::type & get(pair< T1, T2 > &p) noexcept
constexpr T && forward(typename remove_reference< T >::type &t) noexcept
tuple(const Head &h, const Tail &... t)
tuple(Head &&h, Tail &&... t)