|
| 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.
|
| |