#include <iostream>
#include <sstream>
using namespace std;
class Log {
public:
Log() = default;
Log(const Log&) = delete;
~Log() {
cout << this << " dtor" << endl;
cout << stream_.str() << endl;
}
template <class T>
Log& operator<<(const T& info) {
cout << this << " <<" << endl;
stream_ << info;
return *this;
}
private:
stringstream stream_;
};
int main() {
[]() -> Log&& {
Log log;
log << "A";
return move(log);
} () << "B";
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3N0cmVhbT4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmNsYXNzIExvZyB7CiBwdWJsaWM6CiAgTG9nKCkgPSBkZWZhdWx0OwogIExvZyhjb25zdCBMb2cmKSA9IGRlbGV0ZTsKCiAgfkxvZygpIHsKICAgIGNvdXQgPDwgdGhpcyA8PCAiIGR0b3IiIDw8IGVuZGw7CiAgICBjb3V0IDw8IHN0cmVhbV8uc3RyKCkgPDwgZW5kbDsKICB9CgogIHRlbXBsYXRlIDxjbGFzcyBUPgogIExvZyYgb3BlcmF0b3I8PChjb25zdCBUJiBpbmZvKSB7CiAgICBjb3V0IDw8IHRoaXMgPDwgIiA8PCIgPDwgZW5kbDsKICAgIHN0cmVhbV8gPDwgaW5mbzsKICAgIHJldHVybiAqdGhpczsKICB9CgogcHJpdmF0ZToKICBzdHJpbmdzdHJlYW0gc3RyZWFtXzsKfTsKCmludCBtYWluKCkgewoJW10oKSAtPiBMb2cmJiB7CgkgIExvZyBsb2c7CgkgIGxvZyA8PCAiQSI7CgkgIHJldHVybiBtb3ZlKGxvZyk7Cgl9ICgpIDw8ICJCIjsKCQoJcmV0dXJuIDA7Cn0=