#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<std::tuple<int,int>, int, char> t;
std::cout << elements_size(t) << std::endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dHVwbGU+CiNpbmNsdWRlIDx0eXBlX3RyYWl0cz4KCnRlbXBsYXRlPHN0ZDo6c2l6ZV90IEkgPSAwLCB0eXBlbmFtZS4uLiBUcD4KdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8SSA9PSBzaXplb2YuLi4oVHApLCBpbnQ+Ojp0eXBlCmVsZW1lbnRzX3NpemUoc3RkOjp0dXBsZTxUcC4uLj4mKSB7IHJldHVybiAwOyB9Cgp0ZW1wbGF0ZTxzdGQ6OnNpemVfdCBJID0gMCwgdHlwZW5hbWUuLi4gVHA+CnR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPEkgPCBzaXplb2YuLi4oVHApLCBpbnQ+Ojp0eXBlCmVsZW1lbnRzX3NpemUoc3RkOjp0dXBsZTxUcC4uLj4mIHQpIHsKICAgIHJldHVybiBzaXplb2YodHlwZW5hbWUgc3RkOjp0dXBsZV9lbGVtZW50PEksIHN0ZDo6dHVwbGU8VHAuLi4+Pjo6dHlwZSkgKyBlbGVtZW50c19zaXplPEkgKyAxLCBUcC4uLj4odCk7Cn0KCmludCBtYWluKCkKewogICAgc3RkOjp0dXBsZTxzdGQ6OnR1cGxlPGludCxpbnQ+LCBpbnQsIGNoYXI+IHQ7CiAgICBzdGQ6OmNvdXQgPDwgZWxlbWVudHNfc2l6ZSh0KSA8PCBzdGQ6OmVuZGw7CgogICAgcmV0dXJuIDA7Cn0K