fork(9) download
  1. #include <iostream>
  2.  
  3. template<typename T, T ...>
  4. struct add_all;
  5.  
  6. template<typename T, T X, T ... Rest>
  7. struct add_all<T,X,Rest...>
  8. {
  9. constexpr static T value = X + add_all<T, Rest...>::value;
  10. };
  11.  
  12. template<typename T>
  13. struct add_all<T>
  14. {
  15. constexpr static T value = 0;
  16. };
  17.  
  18. template<typename ... T>
  19. void test()
  20. {
  21. constexpr auto size = add_all<std::size_t, sizeof(T)...>::value;
  22. std::cout << size << std::endl;
  23. }
  24.  
  25. int main()
  26. {
  27. test<int,char, double, char*>();
  28. }
Success #stdin #stdout 0s 3340KB
stdin
Standard input is empty
stdout
17