ThreadSchedule 3.0.0
Modern C++ thread management library
Loading...
Searching...
No Matches
bind.hpp
Go to the documentation of this file.
1#pragma once
2
8#include <tuple>
9#include <type_traits>
10#include <utility>
11
13{
14
15template <typename F, typename... Args>
16auto
17bind_args(F&& function, Args&&... args)
18{
19 return [callable = std::forward<F>(function), arguments = std::make_tuple(std::forward<Args>(args)...)]() mutable
20 { return std::apply(std::move(callable), std::move(arguments)); };
21}
22
31template <typename F, typename... Args>
32using bind_result_t = std::invoke_result_t<decltype(bind_args(std::declval<F>(), std::declval<Args>()...))&>;
33
34} // namespace threadschedule::detail
Aggregates multiple thread_registry_backend instances into a single queryable view.
std::invoke_result_t< decltype(bind_args(std::declval< F >(), std::declval< Args >()...))& > bind_result_t
Result of invoking the decayed callable and arguments stored by bind_args.
Definition bind.hpp:32
auto bind_args(F &&function, Args &&... args)
Definition bind.hpp:17