Advertisement
Guest User

Untitled

a guest
Jul 20th, 2019
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.75 KB | None | 0 0
  1. template< typename RET, typename FIRST = void, typename... ARGS >
  2. class Trampoline {
  3. ...
  4. };
  5.  
  6. template< typename RET > class Trampoline< RET, void > {
  7. ...
  8. };
  9.  
  10. template< typename RET, typename FIRST = void, typename... ARGS >
  11. Trampoline< RET, FIRST, ARGS... > makeTrampoline( RET ( *fn )( FIRST, ARGS... ), FIRST&& f, ARGS&&... args ) {
  12. return Trampoline< RET, FIRST, ARGS... >( fn, std::forward< FIRST >( f ), std::forward< ARGS >( args )... );
  13. }
  14.  
  15. template< typename RET >
  16. Trampoline< RET > makeTrampoline< RET, void >( RET ( *fn )( ) ) {
  17. return Trampoline< RET >( fn );
  18. }
  19.  
  20. static void print( ) {
  21. std::cout << "Hola, mundo !n";
  22. }
  23.  
  24. int main( ) {
  25. auto trampoline = makeTrampoline( print );
  26.  
  27. trampoline( );
  28.  
  29. return 0;
  30. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement