18#include <scoped_allocator>
22 template<
class Fn,
class... Ts, std::size_t... I>
23 requires std::invocable<Fn, decltype(std::get<I>(std::declval<std::tuple<Ts&&...>>()))...>
24 auto invoke_with_specified_args(Fn f, std::index_sequence<I...>, [[maybe_unused]] Ts&&... ts)
26 return f(std::get<I>(std::tuple<Ts&&...>{std::forward<Ts>(ts)...})...);
31 template<
class R,
class L,
class T>
38 template<
class R,
class L,
class T>
45 template<
class R,
class L,
class T>
52 template<
class R,
class L,
class T>
59 template<
class R,
class T>
66 template<
class R,
class T>
73 template<
class... Ts>
struct overloaded : Ts... {
using Ts::operator()...; };
79 constexpr static std::size_t size{1};
82 template<
alloc OuterAlloc,
alloc... InnerAlloc>
83 struct alloc_count<std::scoped_allocator_adaptor<OuterAlloc, InnerAlloc...>>
85 constexpr static std::size_t size{1 +
sizeof...(InnerAlloc)};
Concepts which are sufficiently general to appear in the sequoia namespace.
A concept for allocators.
Definition: Concepts.hpp:48
Definition: Utilities.hpp:78
Definition: Utilities.hpp:29
Definition: Utilities.hpp:73