#include <iostream>
#include <tuple>
#include <type_traits>

template<std::size_t I = 0, typename... Tp>
typename std::enable_if<I == sizeof...(Tp), int>::type
elements_size(std::tuple<Tp...>&) { return 0; }

template<std::size_t I = 0, typename... Tp>
typename std::enable_if<I < sizeof...(Tp), int>::type
elements_size(std::tuple<Tp...>& t) {
    return sizeof(typename std::tuple_element<I, std::tuple<Tp...>>::type) + elements_size<I + 1, Tp...>(t);
}

int main()
{
    std::tuple<int, int, char> t;
    std::cout << elements_size(t) << std::endl;

    return 0;
}
