1 #if !defined(_TUPLE_HH_)
13 template <
int N,
int ... S>
28 template <
int N,
int ... S>
39 template <
typename H,
typename ... T>
40 std::tuple<T...>
tuple_tail(
const std::tuple<H, T...>& original)
42 return tuple_tail(
typename make_tail<std::tuple_size<std::tuple<H, T...>>::value>::type(), original);
46 template <
typename H,
typename ... T>
47 std::tuple<std::reference_wrapper<T>...>
tuple_tail(
const std::tuple<std::reference_wrapper<H>, std::reference_wrapper<T>...>& original)
49 return tuple_tail(
typename make_tail<std::tuple_size<std::tuple<H, T...>>::value>::type(), original);
53 template <
typename H,
typename ... T,
int ... S>
56 return std::make_tuple(std::get<S>(original) ...);
60 template <
typename H,
typename ... T,
int ... S>
61 std::tuple<std::reference_wrapper<T>...>
tuple_tail(
tail_index<S...>,
const std::tuple<std::reference_wrapper<H>, std::reference_wrapper<T>...>& original)
63 return std::make_tuple(std::get<S>(original) ...);
67 template <
unsigned int I>
69 template <
typename Tuple>
70 static void print(std::ostream& os,
const Tuple& t)
73 os << std::get<I>(t) <<
" | ";
80 template <
typename Tuple>
81 static void print(std::ostream& os,
const Tuple& t)
83 os <<
"| " << std::get<0>(t) <<
" | ";
104 template <
typename ...T>
105 std::ostream&
operator<<(std::ostream& os,
const std::tuple<T...>& t)
111 template <
typename ... T>
112 std::istream&
operator>>(std::istream& is, std::tuple<T...>& t)
118 template <
int... s,
typename... T>
120 -> decltype(std::make_tuple(std::ref(std::get<s>(tup))...))
122 return std::make_tuple(std::ref(std::get<s>(tup))...);
125 template <
typename... T>
133 template <
int... s,
typename... T>
135 -> decltype(std::make_tuple(std::ref(std::get<s>(tup))...))
137 return std::make_tuple(std::ref(std::get<s>(tup))...);
140 template <
typename... T>
std::ostream & operator<<(std::ostream &os, const EvaluatedMove< Move, CFtype > &em)
std::istream & operator>>(std::istream &is, BaseParameter< T > &p)
auto ref_tuple_impl(tuple_index< s...> seq, std::tuple< T...> &tup) -> decltype(std::make_tuple(std::ref(std::get< s >(tup))...))
static void print(std::ostream &os, const Tuple &t)
std::tuple< T...> tuple_tail(const std::tuple< H, T...> &original)
auto to_refs(std::tuple< T...> &tup) -> decltype(ref_tuple_impl(typename make_index< sizeof...(T)>::type(), tup))
auto to_crefs(const std::tuple< T...> &tup) -> decltype(ref_tuple_impl(typename make_index< sizeof...(T)>::type(), tup))
static void print(std::ostream &os, const Tuple &t)