| 63 | |
| 64 | template <typename FirstFunction, typename SecondFunction> |
| 65 | decltype(auto) compose(FirstFunction&& firstFunction, SecondFunction&& secondFunction) { |
| 66 | return FunctionComposer<FirstFunction, SecondFunction>{std::move(std::forward<FirstFunction>(firstFunction)), std::move(std::forward<SecondFunction>(secondFunction))}; |
| 67 | } |
| 68 | |
| 69 | template <typename FirstFunction, typename SecondFunction, typename ThirdFunction, typename... RestFunctions> |
| 70 | decltype(auto) compose(FirstFunction firstFunction, SecondFunction secondFunction, ThirdFunction thirdFunction, RestFunctions... restFunctions) { |