#include <tuple>
#include <iostream>
template<std::size_t> struct int_{};
template<class Ch, class Tr, class Tuple, std::size_t I>
void print_tuple(std::basic_ostream<Ch,Tr>& os, Tuple const& t, int_<I>){
print_tuple(os, t, int_<I-1>());
os << ", " << std::get<I>(t);
}
template<class Ch, class Tr, class Tuple>
void print_tuple(std::basic_ostream<Ch,Tr>& os, Tuple const& t, int_<0>){
os << std::get<0>(t);
}
template<class Ch, class Traits, class Tuple>
void print(std::basic_ostream<Ch,Traits>& os, Tuple const& t){
os << "(";
print_tuple(os, t, int_<std::tuple_size<Tuple>::value-1>());
os << ")";
}
int main(){
print(std::cout, std::make_tuple(5, "Hello", -0.1));
}
I2luY2x1ZGUgPHR1cGxlPgojaW5jbHVkZSA8aW9zdHJlYW0+CiAKdGVtcGxhdGU8c3RkOjpzaXplX3Q+IHN0cnVjdCBpbnRfe307CiAKdGVtcGxhdGU8Y2xhc3MgQ2gsIGNsYXNzIFRyLCBjbGFzcyBUdXBsZSwgc3RkOjpzaXplX3QgST4Kdm9pZCBwcmludF90dXBsZShzdGQ6OmJhc2ljX29zdHJlYW08Q2gsVHI+JiBvcywgVHVwbGUgY29uc3QmIHQsIGludF88ST4pewogIHByaW50X3R1cGxlKG9zLCB0LCBpbnRfPEktMT4oKSk7CiAgb3MgPDwgIiwgIiA8PCBzdGQ6OmdldDxJPih0KTsKfQogCnRlbXBsYXRlPGNsYXNzIENoLCBjbGFzcyBUciwgY2xhc3MgVHVwbGU+CnZvaWQgcHJpbnRfdHVwbGUoc3RkOjpiYXNpY19vc3RyZWFtPENoLFRyPiYgb3MsIFR1cGxlIGNvbnN0JiB0LCBpbnRfPDA+KXsKICBvcyA8PCBzdGQ6OmdldDwwPih0KTsKfQogCnRlbXBsYXRlPGNsYXNzIENoLCBjbGFzcyBUcmFpdHMsIGNsYXNzIFR1cGxlPgp2b2lkIHByaW50KHN0ZDo6YmFzaWNfb3N0cmVhbTxDaCxUcmFpdHM+JiBvcywgVHVwbGUgY29uc3QmIHQpewogIG9zIDw8ICIoIjsKICBwcmludF90dXBsZShvcywgdCwgaW50XzxzdGQ6OnR1cGxlX3NpemU8VHVwbGU+Ojp2YWx1ZS0xPigpKTsKICBvcyA8PCAiKSI7Cn0KIAppbnQgbWFpbigpewogIHByaW50KHN0ZDo6Y291dCwgc3RkOjptYWtlX3R1cGxlKDUsICJIZWxsbyIsIC0wLjEpKTsKfQ==