fork download
  1. #include <iostream>
  2. #include <tuple>
  3. #include <type_traits>
  4.  
  5. template<std::size_t I = 0, typename... Tp>
  6. typename std::enable_if<I == sizeof...(Tp) - 1, int>::type
  7. elements_size(std::tuple<Tp...>&) {
  8. return sizeof(typename std::tuple_element<I, std::tuple<Tp...>>::type);
  9. }
  10.  
  11. template<std::size_t I = 0, typename... Tp>
  12. typename std::enable_if<I < sizeof...(Tp) -1 && std::is_pod<typename std::tuple_element<I, std::tuple<Tp...>>::type>::value, int>::type
  13. elements_size(std::tuple<Tp...>& t) {
  14. return sizeof(typename std::tuple_element<I, std::tuple<Tp...>>::type) + elements_size<I + 1, Tp...>(t);
  15. }
  16.  
  17. int main()
  18. {
  19. std::tuple<int, int, char> t;
  20. std::cout << elements_size(t) << std::endl;
  21.  
  22. return 0;
  23. }
Success #stdin #stdout 0s 3412KB
stdin
Standard input is empty
stdout
9