Advertisement
Guest User

Untitled

a guest
Mar 19th, 2019
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.84 KB | None | 0 0
  1. #include <iostream>
  2. #include <utility>
  3.  
  4. template <typename T>
  5. T add(T first) {
  6. return first;
  7. }
  8.  
  9. template <typename T, typename ... Args>
  10. T add(T car, Args... cdr) {
  11. return car + add(cdr...);
  12. }
  13.  
  14. template <int ... Args>
  15. int total() {
  16. return add(Args...);
  17. }
  18.  
  19.  
  20. int main(int argc, char** argv)
  21. {
  22. using std::cout;
  23. using std::endl;
  24.  
  25. int s1 =
  26. total<0, 1, 2, 3>();
  27. std::cout << "s1 = " << s1 << std::endl;
  28.  
  29. // The following does not compile:
  30. #if 0
  31. int s2 =
  32. total<std::make_integer_sequence<int, 4>>();
  33. std::cout << "s2 = " << s2 << std::endl;
  34.  
  35. static_assert(s1 == s2, "no match");
  36. #endif
  37.  
  38. // This should work:
  39. //
  40. {
  41. cout << typeid(std::make_integer_sequence<int, 4>()).name() << endl;;
  42. cout << std::make_integer_sequence<int, 4>().size << endl;;
  43. }
  44.  
  45. return 0;
  46. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement