#include <iomanip>
#include <iostream>
#include <sstream>
using namespace std;
ostringstream& make_string_impl(ostringstream&& s) { return s; }
template<typename T, typename... Ts>
ostringstream& make_string_impl(ostringstream&& s, T&& t, Ts&&... ts) {
s << t;
return make_string_impl(std::move(s), std::forward<Ts>(ts)...);
}
template<typename... Ts>
string make_string(Ts&&... ts) {
return make_string_impl(ostringstream{}, std::forward<Ts>(ts)...).str();
}
int main() {
cout << make_string("Hello, ", 5, " World!", '\n', 10.0, "\n0x", hex, 15, "\n");
}
I2luY2x1ZGUgPGlvbWFuaXA+CiNpbmNsdWRlIDxpb3N0cmVhbT4KI2luY2x1ZGUgPHNzdHJlYW0+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKb3N0cmluZ3N0cmVhbSYgbWFrZV9zdHJpbmdfaW1wbChvc3RyaW5nc3RyZWFtJiYgcykgeyByZXR1cm4gczsgfQoKdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUuLi4gVHM+Cm9zdHJpbmdzdHJlYW0mIG1ha2Vfc3RyaW5nX2ltcGwob3N0cmluZ3N0cmVhbSYmIHMsIFQmJiB0LCBUcyYmLi4uIHRzKSB7CiAgICBzIDw8IHQ7CiAgICByZXR1cm4gbWFrZV9zdHJpbmdfaW1wbChzdGQ6Om1vdmUocyksIHN0ZDo6Zm9yd2FyZDxUcz4odHMpLi4uKTsKfQoKdGVtcGxhdGU8dHlwZW5hbWUuLi4gVHM+CnN0cmluZyBtYWtlX3N0cmluZyhUcyYmLi4uIHRzKSB7CiAgICByZXR1cm4gbWFrZV9zdHJpbmdfaW1wbChvc3RyaW5nc3RyZWFte30sIHN0ZDo6Zm9yd2FyZDxUcz4odHMpLi4uKS5zdHIoKTsKfQoKaW50IG1haW4oKSB7CiAgICBjb3V0IDw8IG1ha2Vfc3RyaW5nKCJIZWxsbywgIiwgNSwgIiBXb3JsZCEiLCAnXG4nLCAxMC4wLCAiXG4weCIsIGhleCwgMTUsICJcbiIpOwp9