我想获取 lambda 的返回类型和参数类型。 是否可以确定 lambda 的参数类型和返回类型?给出一个解决方案。但它不适用于通用 lambda。
template<typename F>
struct function_traits :public
function_traits<decltype(&F::operator())> {};
template<typename R,typename C,typename... Args>
struct function_traits<R(C::*)(Args...)const>:public
function_traits<R(Args...)>{
constexpr static size_t arity = sizeof...(Args);
};
auto f1 = [](int x) {return x+1; };
Print(function_traits<decltype(f1)>::arity); //return 1
auto f2 = [](auto x) {return x+1; };
Print(function_traits<decltype(f2)>::arity); //error
那么如何解决它来获取泛型 lambda 的返回类型和参数类型呢?