17 #ifndef ABSL_FUNCTIONAL_INTERNAL_FRONT_BINDER_H_
18 #define ABSL_FUNCTIONAL_INTERNAL_FRONT_BINDER_H_
21 #include <type_traits>
24 #include "absl/base/internal/invoke.h"
25 #include "absl/container/internal/compressed_tuple.h"
26 #include "absl/meta/type_traits.h"
27 #include "absl/utility/utility.h"
31 namespace functional_internal {
34 template <
class R,
class Tuple,
size_t... Idx,
class...
Args>
37 absl::forward<Tuple>(bound).
template get<Idx>()...,
38 absl::forward<Args>(free)...);
41 template <
class F,
class... BoundArgs>
49 template <
class... Ts>
54 F&, BoundArgs&..., FreeArgs&&...>>
57 absl::forward<FreeArgs>(free_args)...);
60 template <
class... FreeArgs,
62 const F&,
const BoundArgs&..., FreeArgs&&...>>
65 absl::forward<FreeArgs>(free_args)...);
69 F&&, BoundArgs&&..., FreeArgs&&...>>
74 absl::forward<FreeArgs>(free_args)...);
77 template <
class... FreeArgs,
79 const F&&,
const BoundArgs&&..., FreeArgs&&...>>
84 absl::forward<FreeArgs>(free_args)...);
88 template <
class F,
class... BoundArgs>
95 #endif // ABSL_FUNCTIONAL_INTERNAL_FRONT_BINDER_H_