#include <iostream>
struct int_wrapper { int i ; /* .... */ } ;
std::ostream& print( const int_wrapper& w ) { return std::cout << '{' << w.i << "} " ; }
std::ostream& print_all() { return std::cout << '\n' ; }
template < typename... T > std::ostream& print_all( const int_wrapper& first, const T&... rest )
{
print(first) ;
return print_all( rest... ) ;
}
int main()
{
int_wrapper a{0}, b{1}, c{2}, d{3} ;
print_all() ;
print_all( a ) ;
print_all( a, b ) ;
print_all( a, b, c ) ;
print_all( a, b, c, d ) ;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKc3RydWN0IGludF93cmFwcGVyIHsgaW50IGkgOyAvKiAuLi4uICovIH0gOwoKc3RkOjpvc3RyZWFtJiBwcmludCggY29uc3QgaW50X3dyYXBwZXImIHcgKSB7IHJldHVybiBzdGQ6OmNvdXQgPDwgJ3snIDw8IHcuaSA8PCAifSAiIDsgfQoKc3RkOjpvc3RyZWFtJiBwcmludF9hbGwoKSB7IHJldHVybiBzdGQ6OmNvdXQgPDwgJ1xuJyA7IH0KCnRlbXBsYXRlIDwgdHlwZW5hbWUuLi4gVCA+IHN0ZDo6b3N0cmVhbSYgcHJpbnRfYWxsKCBjb25zdCBpbnRfd3JhcHBlciYgZmlyc3QsIGNvbnN0IFQmLi4uIHJlc3QgKQp7CiAgICAgcHJpbnQoZmlyc3QpIDsKICAgICByZXR1cm4gcHJpbnRfYWxsKCByZXN0Li4uICkgOwp9CgppbnQgbWFpbigpCnsKICAgIGludF93cmFwcGVyIGF7MH0sIGJ7MX0sIGN7Mn0sIGR7M30gOwogICAgcHJpbnRfYWxsKCkgOwogICAgcHJpbnRfYWxsKCBhICkgOwogICAgcHJpbnRfYWxsKCBhLCBiICkgOwogICAgcHJpbnRfYWxsKCBhLCBiLCBjICkgOwogICAgcHJpbnRfYWxsKCBhLCBiLCBjLCBkICkgOwp9Cg==