Automatically deduce types of lambda for fun()

This commit is contained in:
Jason Turner
2015-05-19 13:47:34 -06:00
parent dec88db26c
commit 5fa44d5eef
4 changed files with 45 additions and 28 deletions

View File

@@ -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);
}
}
}