|
class | BasicClosure |
| The core class, wrapping one functional object and enabling a variety of composing operators for it. More...
|
|
struct | closure_template |
| Primary template, purposely undefined. More...
|
|
struct | closure_template< BasicClosure< Fn, InvokePolicy, OperatorPolicies... > > |
| Specialization, providing the closure template as member alias. More...
|
|
class | Composition |
| Functional type, composing multiple other functional types via the provided strategy. More...
|
|
class | ConjunctionOperator |
|
struct | ConjunctionStrategy |
|
class | DisjunctionOperator |
|
struct | DisjunctionStrategy |
|
class | EqualityOperator |
|
struct | EqualityStrategy |
|
struct | is_composition |
| Primary template, yielding false type. More...
|
|
struct | is_composition< Composition< CompositionStrategy, Fns... > > |
| Specialization for Composition. More...
|
|
class | NegationOperator |
|
struct | Overloaded |
| Helper invocable type which can hold an arbitrary amount of functions, from which the best match will be selected during invocation. More...
|
|
class | PipeOperator |
|
struct | PipeStrategy |
|
struct | unwrap_functional |
| Primary template for non BasicClosure types. More...
|
|
struct | unwrap_functional< BasicClosure< Fn, InvokePolicy, OperatorPolicies... > & > |
| Specialization for lvalue-references of BasicClosure class. More...
|
|
struct | unwrap_functional< BasicClosure< Fn, InvokePolicy, OperatorPolicies... > && > |
| Specialization for rvalue-references of BasicClosure class. More...
|
|
struct | unwrap_functional< const BasicClosure< Fn, InvokePolicy, OperatorPolicies... > & > |
| Specialization for const lvalue-references of BasicClosure class. More...
|
|
struct | unwrap_functional< const BasicClosure< Fn, InvokePolicy, OperatorPolicies... > && > |
| Specialization for const rvalue-references of BasicClosure class. More...
|
|
|
template<class T > |
using | unwrap_functional_t = typename unwrap_functional< T >::type |
| Convenient alias for the type member alias to unwrap_functional trait.
|
|
template<concepts::unqualified Derived> |
using | BasicInvokePolicy = detail::BasicInvokePolicy< Derived, detail::InvocableStrategy > |
| CRTP type, enabling all four operator () overloads for derived classes.
|
|
template<concepts::unqualified Derived> |
using | NodiscardInvokePolicy = detail::NodiscardInvokePolicy< Derived, detail::InvocableStrategy > |
| CRTP type, enabling all four operator () overloads for derived classes, which are all marked with th enodiscard attribute.
|
|
template<concepts::unqualified Derived> |
using | PredicateInvokePolicy = detail::NodiscardInvokePolicy< Derived, detail::PredicateStrategy > |
| CRTP type, enabling all four operator () overloads for derived classes, which are all marked with the nodiscard attribute.
|
|
template<concepts::unqualified Derived> |
using | BasicApplyPolicy = detail::NodiscardInvokePolicy< Derived, detail::ApplicableStrategy > |
| CRTP type, enabling all four operator () overloads for derived classes and expects the params to be tied as tuple.
|
|
template<concepts::unqualified Derived> |
using | NodiscardApplyPolicy = detail::NodiscardInvokePolicy< Derived, detail::ApplicableStrategy > |
| CRTP type, enabling all four operator () overloads for derived classes and expects the params to be tied as tuple. Additionally the call operators are marked with the nodiscard attribute.
|
|
template<function Fn> |
using | Predicate = BasicClosure< Fn, PredicateInvokePolicy, PipeOperator, EqualityOperator, ConjunctionOperator, DisjunctionOperator, NegationOperator > |
| Closure template for predicate like types, which accepts a functional type and enables pipe, negation, conjunctive and disjunctive chaining, and equality comparison.
|
|
template<function Fn> |
using | Transform = BasicClosure< Fn, NodiscardInvokePolicy, PipeOperator > |
| Closure template for variadic transform like functional types, which enables piping.
|
|
template<function Fn> |
using | Apply = BasicClosure< Fn, NodiscardApplyPolicy, PipeOperator > |
| Stores a functional and forwards elements from provided tuples as params on invocation.
|
|
|
template<class Fn > |
constexpr unwrap_functional_t< Fn && > && | forward_unwrapped (std::remove_reference_t< Fn > &fn) noexcept |
| Unwraps the functional if stored in a closure. Otherwise forwards as-is.
|
|
template<template< class > class Closure, class Fn > |
constexpr Closure< std::remove_cvref_t< Fn > > | envelop (Fn &&fn) noexcept(std::is_nothrow_constructible_v< std::remove_cvref_t< Fn >, Fn >) |
| Wraps the given functional into the given closure type.
|
|
template<composition_strategy CompositionStrategy, class FirstFn , class SecondFn , class... OtherFns>
requires (std::same_as<unwrap_functional_t<FirstFn>, FirstFn> && std::same_as<unwrap_functional_t<SecondFn>, SecondFn> && (... && std::same_as<unwrap_functional_t<OtherFns>, OtherFns>)) |
constexpr auto | make_composition (FirstFn &&firstFn, SecondFn &&secondFn, OtherFns &&... otherFns) noexcept(std::is_nothrow_constructible_v< std::remove_cvref_t< FirstFn >, FirstFn > &&std::is_nothrow_constructible_v< std::remove_cvref_t< SecondFn >, SecondFn > &&(... &&std::is_nothrow_constructible_v< std::remove_cvref_t< OtherFns >, OtherFns >)) |
| Base factory overload, taking fully unwrapped functional objects and forwarding those to a newly created Composition instance.
|
|
template<composition_strategy CompositionStrategy, class FirstFn , class SecondFn , class... OtherFns> |
constexpr auto | make_composition (FirstFn &&firstFn, SecondFn &&secondFn, OtherFns &&... otherFns) noexcept(noexcept(make_composition< CompositionStrategy >(forward_unwrapped< FirstFn >(firstFn), forward_unwrapped< SecondFn >(secondFn), forward_unwrapped< OtherFns >(otherFns)...))) |
| Factory overload, unwrapping the given functionals and forwarding those to a newly created Composition instance.
|
|
template<class... Fns> |
| Overloaded (Fns...) -> Overloaded< Fns... > |
| Deduction guide of overloaded type.
|
|