15 #ifndef dealii_cxx17_tuple_h
16 #define dealii_cxx17_tuple_h
25 #ifndef DEAL_II_HAVE_CXX17
26 template <
typename F,
typename Tuple,
size_t... S>
29 -> decltype(std::forward<F>(fn)(std::get<S>(std::forward<Tuple>(t))...))
31 return std::forward<F>(fn)(std::get<S>(std::forward<Tuple>(t))...);
34 template <
typename F,
typename Tuple>
38 std::forward<Tuple>(t),
39 std::make_index_sequence<
40 std::tuple_size<
typename std::remove_reference<Tuple>::type>::value>()))
42 std::size_t constexpr tSize =
43 std::tuple_size<typename std::remove_reference<Tuple>::type>::value;
45 std::forward<Tuple>(t),
46 std::make_index_sequence<tSize>());
#define DEAL_II_NAMESPACE_OPEN
#define DEAL_II_NAMESPACE_CLOSE
Tensor< 2, dim, Number > F(const Tensor< 2, dim, Number > &Grad_u)
auto apply_impl(F &&fn, Tuple &&t, std::index_sequence< S... >) -> decltype(std::forward< F >(fn)(std::get< S >(std::forward< Tuple >(t))...))
auto apply(F &&fn, Tuple &&t) -> decltype(apply_impl(std::forward< F >(fn), std::forward< Tuple >(t), std::make_index_sequence< std::tuple_size< typename std::remove_reference< Tuple >::type >::value >()))