Automatically deduce types of lambda for fun()
This commit is contained in:
@@ -36,6 +36,7 @@ namespace chaiscript
|
||||
return std::function<Ret (Args...)>(func);
|
||||
}
|
||||
|
||||
|
||||
template<typename Ret, typename Class, typename ... Args>
|
||||
std::function<Ret (Class &, Args...) > to_function(Ret (Class::*func)(Args...))
|
||||
{
|
||||
@@ -62,6 +63,25 @@ namespace chaiscript
|
||||
#endif
|
||||
}
|
||||
|
||||
template<typename T, typename Ret, typename Class, typename ... Args>
|
||||
std::function<Ret (Args...)> to_function_callable(Ret (Class::*)(Args...), T t)
|
||||
{
|
||||
return std::function<Ret (Args...)>(t);
|
||||
}
|
||||
|
||||
template<typename T, typename Ret, typename Class, typename ... Args>
|
||||
std::function<Ret (Args...)> to_function_callable(Ret (Class::*)(Args...) const, T t)
|
||||
{
|
||||
return std::function<Ret (Args...)>(t);
|
||||
}
|
||||
|
||||
|
||||
template<typename T>
|
||||
auto to_function(T t) -> decltype(to_function_callable(&T::operator(), t))
|
||||
{
|
||||
return to_function_callable(&T::operator(), t);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user