15 #ifndef dealii_cxx17_tuple_h 16 #define dealii_cxx17_tuple_h 22 #ifndef __cpp_lib_apply 24 #endif // __cpp_lib_apply 29 #ifndef __cpp_lib_apply 30 template <
typename F,
typename Tuple,
size_t... S>
32 apply_impl(F &&fn, Tuple &&t, std_cxx14::index_sequence<S...>)
33 -> decltype(std::forward<F>(fn)(std::get<S>(std::forward<Tuple>(t))...))
35 return std::forward<F>(fn)(std::get<S>(std::forward<Tuple>(t))...);
38 template <
typename F,
typename Tuple>
42 std::forward<Tuple>(t),
43 std_cxx14::make_index_sequence<
44 std::tuple_size<
typename std::remove_reference<Tuple>::type>::
value>()))
46 std::size_t constexpr tSize =
47 std::tuple_size<typename std::remove_reference<Tuple>::type>
::value;
49 std::forward<Tuple>(t),
50 std_cxx14::make_index_sequence<tSize>());
54 #endif // __cpp_lib_apply
Tensor< 2, dim, Number > F(const Tensor< 2, dim, Number > &Grad_u)
auto apply_impl(F &&fn, Tuple &&t, std_cxx14::index_sequence< S... >) -> decltype(std::forward< F >(fn)(std::get< S >(std::forward< Tuple >(t))...))
#define DEAL_II_NAMESPACE_CLOSE
auto apply(F &&fn, Tuple &&t) -> decltype(apply_impl(std::forward< F >(fn), std::forward< Tuple >(t), std_cxx14::make_index_sequence< std::tuple_size< typename std::remove_reference< Tuple >::type >::value >()))
#define DEAL_II_NAMESPACE_OPEN