35using decay_t =
typename std::decay<T>::type;
37template <
bool B,
typename T =
void>
46template <
size_t... Indexes>
51template <
typename Itup1,
typename Itup2>
54template <
size_t... Ind1,
size_t... Ind2>
63:
Itup_cat<typename Build_index_tuple<NumT / 2>::__type,
64 typename Build_index_tuple<NumT - NumT / 2>::__type>
80template <
typename Tp, Tp... Idx>
84 static constexpr size_t size() noexcept {
return sizeof...(Idx); }
87template <typename Tp, Tp NumT, typename ISeq = typename Build_index_tuple<NumT>::__type>
90template <
typename Tp, Tp NumT,
size_t... Idx>
93 static_assert(NumT >= 0,
"Cannot make integer sequence of negative length");
99template <
typename Tp, Tp NumT>
103template <
size_t... Idx>
107template <
size_t NumT>
110template <
typename FnT,
typename TupleT,
size_t... Idx>
113 ->
decltype(std::forward<FnT>(_func)(std::get<Idx>(std::move(_args))...))
116#if defined(__GNUC__) && (__GNUC__ < 6)
117 if(
sizeof...(Idx) == 0)
122 return std::forward<FnT>(_func)(std::get<Idx>(std::move(_args))...);
131template <
typename FnT,
typename TupleT>
133apply(FnT&& _func, TupleT&& _args)
136 constexpr auto N = std::tuple_size<tuple_type>::value;
137 impl::apply(std::forward<FnT>(_func), std::forward<TupleT>(_args),
Provision of tuple expansion to arguments.
integer_sequence< size_t, Idx... > index_sequence
Alias template index_sequence.
make_integer_sequence< size_t, NumT > make_index_sequence
Alias template make_index_sequence.
typename Make_integer_sequence< Tp, NumT >::__type make_integer_sequence
Alias template make_integer_sequence.
Backports of C++ language features for use with C++11 compilers.
void ConsumeParameters(Args &&...)
typename std::enable_if< B, T >::type enable_if_t
typename std::decay< T >::type decay_t
Index_tuple< Ind1...,(Ind2+sizeof...(Ind1))... > __type
integer_sequence< Tp, static_cast< Tp >(Idx)... > __type
Class template integer_sequence.
static constexpr size_t size() noexcept