#include <iostream>
using namespace std;
class logger {
private:
class append_endl {
public:
~append_endl() {
std::cout << std::endl;
}
template <typename T>
append_endl& operator<<(T const &value) {
std::cout << value;
return *this;
}
};
public:
template <typename T>
append_endl operator<<(T const &value) {
std::cout << value;
return append_endl();
}
};
int main() {
logger log;
log << "Hello";
log << "World";
log << "Hello" << "World";
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY2xhc3MgbG9nZ2VyIHsKcHJpdmF0ZToKCWNsYXNzIGFwcGVuZF9lbmRsIHsKCXB1YmxpYzoKCQl+YXBwZW5kX2VuZGwoKSB7CgkJCXN0ZDo6Y291dCA8PCBzdGQ6OmVuZGw7CgkJfQoJCXRlbXBsYXRlIDx0eXBlbmFtZSBUPgoJCWFwcGVuZF9lbmRsJiBvcGVyYXRvcjw8KFQgY29uc3QgJnZhbHVlKSB7CgkJCXN0ZDo6Y291dCA8PCB2YWx1ZTsKCQkJcmV0dXJuICp0aGlzOwoJCX0KCX07CnB1YmxpYzoKCXRlbXBsYXRlIDx0eXBlbmFtZSBUPgoJYXBwZW5kX2VuZGwgb3BlcmF0b3I8PChUIGNvbnN0ICZ2YWx1ZSkgewogICAgCXN0ZDo6Y291dCA8PCB2YWx1ZTsKICAgIAlyZXR1cm4gYXBwZW5kX2VuZGwoKTsKCX0KfTsKCmludCBtYWluKCkgewoJbG9nZ2VyIGxvZzsKCWxvZyA8PCAiSGVsbG8iOwoJbG9nIDw8ICJXb3JsZCI7Cglsb2cgPDwgIkhlbGxvIiA8PCAiV29ybGQiOwoJcmV0dXJuIDA7Cn0=