#include <iostream>
#include <sstream>
#include <typeinfo>
using namespace std;
#define UNICODE
namespace mine {
#ifdef UNICODE
using Char = wchar_t;
#define Str(s) L##s
#define UCOUT wcout
#else
using Char = char;
#define Str(s) s
#define UCOUT cout
#endif
using String = std::basic_string<Char>;
using StringStream = std::basic_stringstream<Char>;
}
int main() {
mine::String s=Str("Hello");
auto s2=s;
cout << typeid(s2).name() <<endl;
cout << typeid(s).name() <<endl;
cout << typeid(string).name() <<endl;
mine::StringStream sst{Str("Test")};
sst<<Str(" ")<<s<<Str(" ")<<s2<<Str(" !!!")<<endl;
// cout << sst.str()<<endl;
UCOUT << sst.str()<<endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3N0cmVhbT4KI2luY2x1ZGUgPHR5cGVpbmZvPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKI2RlZmluZSBVTklDT0RFCgpuYW1lc3BhY2UgbWluZSB7CiNpZmRlZiBVTklDT0RFCiAgICB1c2luZyBDaGFyID0gd2NoYXJfdDsgCiAgICAjZGVmaW5lIFN0cihzKSBMIyNzCiAgICAjZGVmaW5lIFVDT1VUIHdjb3V0CiNlbHNlCiAgICB1c2luZyBDaGFyID0gY2hhcjsgCiAgICAjZGVmaW5lIFN0cihzKSBzCiAgICAjZGVmaW5lIFVDT1VUIGNvdXQKI2VuZGlmCiAgICB1c2luZyBTdHJpbmcgPSBzdGQ6OmJhc2ljX3N0cmluZzxDaGFyPjsKICAgIHVzaW5nIFN0cmluZ1N0cmVhbSA9IHN0ZDo6YmFzaWNfc3RyaW5nc3RyZWFtPENoYXI+Owp9CgppbnQgbWFpbigpIHsKCW1pbmU6OlN0cmluZyBzPVN0cigiSGVsbG8iKTsKCWF1dG8gczI9czsKCWNvdXQgPDwgdHlwZWlkKHMyKS5uYW1lKCkgPDxlbmRsOwoJY291dCA8PCB0eXBlaWQocykubmFtZSgpIDw8ZW5kbDsgCgljb3V0IDw8IHR5cGVpZChzdHJpbmcpLm5hbWUoKSA8PGVuZGw7IAoJbWluZTo6U3RyaW5nU3RyZWFtIHNzdHtTdHIoIlRlc3QiKX07Cglzc3Q8PFN0cigiICIpPDxzPDxTdHIoIiAiKTw8czI8PFN0cigiICEhISIpPDxlbmRsOyAKLy8JY291dCA8PCBzc3Quc3RyKCk8PGVuZGw7IAoJVUNPVVQgPDwgc3N0LnN0cigpPDxlbmRsOyAKCXJldHVybiAwOwp9