Advertisement
Guest User

Untitled

a guest
Feb 13th, 2016
56
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.65 KB | None | 0 0
  1. #include <iostream>
  2. #include <boost/preprocessor.hpp>
  3.  
  4. const int value1 = 10;
  5. const int value2 = 2;
  6.  
  7. int func1() { return 5; }
  8. int func2() { return 2; }
  9.  
  10. #define template_expr(arg1, arg2) std::cout << arg1 + arg2() << std::endl
  11.  
  12. #define ParamSet1() (value1, func1)
  13. #define ParamSet2() (value2, func2)
  14.  
  15. #define instantiate(expr, set_number) BOOST_PP_EXPAND(expr ParamSet##set_number())
  16.  
  17. #define instantiate_by_name(expr, set_name) BOOST_PP_EXPAND(expr set_name())
  18.  
  19. int main()
  20. {
  21. instantiate(template_expr, 1); // std::cout << value1 + func1() << std::endl;
  22. instantiate_by_name(template_expr, ParamSet2); // std::cout << value2 + func2() << std::endl
  23. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement