Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- template <int... Is>
- struct int_range {};
- template <int N, int... Is>
- struct make_int_range : make_int_range<N - 1, N - 1, Is...> {};
- template <int... Is>
- struct make_int_range<0, Is...> : int_range<Is...> {};
- /**
- * Private/internal, don't use
- */
- template <class Lambda, int... Is>
- auto _make_function(const Lambda& f, int_range<Is...>) -> void /*TODO*/ {
- typedef function_traits<Lambda> traits;
- return std::function<typename traits::return_type(typename traits::template arg<Is>::type...)>(f);
- }
- /**
- * Lambda to std::function
- */
- template <class Lambda>
- auto make_function(const Lambda& f) -> void { //TODO std::function<function_traits<Lambda>::return_type(function_traits<Lambda>::args)> {
- typedef function_traits<Lambda> traits;
- return _make_function(f, make_int_range<function_traits<Lambda>::arity>());
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement