Advertisement
Guest User

Untitled

a guest
Mar 31st, 2015
191
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.86 KB | None | 0 0
  1. template <int... Is>
  2. struct int_range {};
  3.  
  4. template <int N, int... Is>
  5. struct make_int_range : make_int_range<N - 1, N - 1, Is...> {};
  6.  
  7. template <int... Is>
  8. struct make_int_range<0, Is...> : int_range<Is...> {};
  9.  
  10. /**
  11.  * Private/internal, don't use
  12.  */
  13. template <class Lambda, int... Is>
  14. auto _make_function(const Lambda& f, int_range<Is...>) -> void /*TODO*/ {
  15.         typedef function_traits<Lambda> traits;
  16.         return std::function<typename traits::return_type(typename traits::template arg<Is>::type...)>(f);
  17. }
  18.  
  19. /**
  20.  * Lambda to std::function
  21.  */
  22. template <class Lambda>
  23. auto make_function(const Lambda& f) -> void  { //TODO std::function<function_traits<Lambda>::return_type(function_traits<Lambda>::args)> {
  24.         typedef function_traits<Lambda> traits;
  25.         return _make_function(f, make_int_range<function_traits<Lambda>::arity>());
  26. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement