12#ifndef dealii_cxx20_functional_h
13#define dealii_cxx20_functional_h
17#ifdef DEAL_II_HAVE_CXX20
29#ifndef DEAL_II_HAVE_CXX20
41 typename BoundArgsTuple,
43 constexpr decltype(
auto)
44 call_bind(F &&function,
45 std::index_sequence<Ind...>,
46 BoundArgsTuple &&bound_args,
47 CallArgs &&...call_args)
49 return std::invoke(std::forward<F>(function),
51 std::forward<BoundArgsTuple>(bound_args))...,
52 std::forward<CallArgs>(call_args)...);
59 template <
typename F,
typename... BoundArgs>
61 make_bind_front(F &&f, BoundArgs &&...bound_args)
63 return [f = std::forward<F>(f),
64 bound_args = std::make_tuple(
65 std::forward<BoundArgs>(bound_args)...)](
auto &&...call_args) {
69 std::index_sequence_for<BoundArgs...>{},
71 std::forward<decltype(call_args)>(call_args)...);
117 template <
typename F,
typename... BoundArgs>
121 return internal::make_bind_front(std::forward<F>(f),
122 std::forward<BoundArgs>(bound_args)...);
125 using std::bind_front;
#define DEAL_II_NAMESPACE_OPEN
#define DEAL_II_NAMESPACE_CLOSE
Tensor< 2, dim, Number > F(const Tensor< 2, dim, Number > &Grad_u)
decltype(auto) bind_front(F &&f, BoundArgs &&...bound_args)