#include <string>
#include <sstream>
#include <iostream>
template <class Number>
std::string& operator<<(std::string& s, Number a) {
return s += std::to_string(a);
}
std::string& operator<<(std::string& s, const char* a) {
return s += a;
}
std::string& operator<<(std::string& s, const std::string &a) {
return s += a;
}
int main() {
std::string s;
// this prints out: "inserting text and a number(1)"
std::cout << (s << "inserting text and a number (" << 1 << ")\n");
// normal way
std::ostringstream os;
os << "inserting text and a number (" << 1 << ")\n";
std::cout << os.str();
}
I2luY2x1ZGUgPHN0cmluZz4KI2luY2x1ZGUgPHNzdHJlYW0+CiNpbmNsdWRlIDxpb3N0cmVhbT4KCnRlbXBsYXRlIDxjbGFzcyBOdW1iZXI+IApzdGQ6OnN0cmluZyYgb3BlcmF0b3I8PChzdGQ6OnN0cmluZyYgcywgTnVtYmVyIGEpIHsKICAgIHJldHVybiBzICs9IHN0ZDo6dG9fc3RyaW5nKGEpOwp9CnN0ZDo6c3RyaW5nJiBvcGVyYXRvcjw8KHN0ZDo6c3RyaW5nJiBzLCBjb25zdCBjaGFyKiBhKSB7CiAgICByZXR1cm4gcyArPSBhOwp9CnN0ZDo6c3RyaW5nJiBvcGVyYXRvcjw8KHN0ZDo6c3RyaW5nJiBzLCBjb25zdCBzdGQ6OnN0cmluZyAmYSkgewogICAgcmV0dXJuIHMgKz0gYTsKfQppbnQgbWFpbigpIHsKICAgIHN0ZDo6c3RyaW5nIHM7CiAgICAvLyB0aGlzIHByaW50cyBvdXQ6ICJpbnNlcnRpbmcgdGV4dCBhbmQgYSBudW1iZXIoMSkiCiAgICBzdGQ6OmNvdXQgPDwgKHMgPDwgImluc2VydGluZyB0ZXh0IGFuZCBhIG51bWJlciAoIiA8PCAxIDw8ICIpXG4iKTsKCiAgICAvLyBub3JtYWwgd2F5CiAgICBzdGQ6Om9zdHJpbmdzdHJlYW0gb3M7IAogICAgb3MgPDwgImluc2VydGluZyB0ZXh0IGFuZCBhIG51bWJlciAoIiA8PCAxIDw8ICIpXG4iOwogICAgc3RkOjpjb3V0IDw8IG9zLnN0cigpOwp9