16 template <
class F,
class... Fs>
17 auto composed(F&& arg, Fs&&... args) {
18 return [fun = std::forward<F>(arg), ... functions = std::forward<Fs>(args)]<
class X>(X&& x)
mutable {
19 if constexpr (
sizeof...(Fs)) {
20 return composed(std::forward<Fs>(functions)...)(std::invoke(std::forward<F>(fun), std::forward<X>(x)));
22 return std::invoke(std::forward<F>(fun), std::forward<X>(x));