Defined in The small helpers the library exposes for use alongside the carriers how an argument is stored when a pipeline step holds it how to forward with a borrowed value category how to fuse callables into one overload set and how to lift a value into a type that prefers braces overload Fuses per alternative lambdas into a single overload set which and the verbs then dispatch over by ordinary overload resolution as_value_t apply_const_lvalue make fn apply template <typename Ts> overload Ts const & > overload<Ts > 1 template <typename T> using as_value_t decltype detail _as_value<T> 1 The type an argument of type T is stored as a non empty lvalue stays an lvalue reference everything else becomes a value What fn functor stores a pipeline operation s arguments as an rvalue is kept alive by value while a stateless empty callable is stored by value even when passed as an lvalue it has no state whose identity would matter A non empty lvalue stays a reference which is what lets an immovable callable participate in a pipeline template <typename T> constexpr auto apply_const_lvalue auto &&v > decltype auto 1 Forwards v with the constness and value category of T applied Unlike apply_const_lvalue_t this is not exact prvalue parameters are returned as xvalue This is meant to disable copying of the return value return v cast to apply_const_lvalue_t<T decltype v > v auto && Value to forward return v cast to apply_const_lvalue_t<T decltype v > v auto && Value to forward template <typename T typename Args> constexpr auto make Args && args > T 1 Lifts arguments into a T preferring braced construction Constructs T args where that is available and T args where it is not so a type whose braced form differs from its parenthesised one is reached the way its author meant return The constructed value args Args && Arguments to construct the T from return The constructed value args Args && Arguments to construct the T from