Header file function.hpp

#define SIPLASPLAS_UTILITY_FUNCTION_HPP 

#include <utility>

namespace cpp
{
    template <typename F>
    struct Function<F>;
    
    template <typename R, typename ... Args>
    struct Function<R(Args...)>;
    
    template <typename First, typename Second, typename ... Tail>
    struct Function<First, Second, Tail...>;
    
    template <typename ... Fs>
    Function<std::decay_t<Fs>...> make_function(Fs&&... fs);
}