//demo classes
#include <iostream>
#include <string>
class demo {
public:
std::string data;
demo() : data("LONG STRING SO NO CHEATS") {std::cout<<"default construct\n";}
demo(const demo& rhs) : data(rhs.data) {std::cout<<"copy construct\n";}
demo& operator=(const demo& rhs) {data = rhs.data; std::cout<<"copy assignment\n"; return *this;}
void prove() const {std::cout<<((void*)(data.c_str()))<<' '<<data.c_str()<<'\n';}
};
//test suite
int main() {
demo a;
a.prove();
demo b = a;
a.prove();
b.prove();
}
Ly9kZW1vIGNsYXNzZXMKI2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgpjbGFzcyBkZW1vIHsKcHVibGljOgogICAgc3RkOjpzdHJpbmcgZGF0YTsKICAgIGRlbW8oKSA6IGRhdGEoIkxPTkcgU1RSSU5HIFNPIE5PIENIRUFUUyIpIHtzdGQ6OmNvdXQ8PCJkZWZhdWx0IGNvbnN0cnVjdFxuIjt9CiAgICBkZW1vKGNvbnN0IGRlbW8mIHJocykgOiBkYXRhKHJocy5kYXRhKSB7c3RkOjpjb3V0PDwiY29weSBjb25zdHJ1Y3RcbiI7fQogICAgZGVtbyYgb3BlcmF0b3I9KGNvbnN0IGRlbW8mIHJocykge2RhdGEgPSByaHMuZGF0YTsgc3RkOjpjb3V0PDwiY29weSBhc3NpZ25tZW50XG4iOyByZXR1cm4gKnRoaXM7fQogICAgdm9pZCBwcm92ZSgpIGNvbnN0IHtzdGQ6OmNvdXQ8PCgodm9pZCopKGRhdGEuY19zdHIoKSkpPDwnICc8PGRhdGEuY19zdHIoKTw8J1xuJzt9Cn07CgoKCi8vdGVzdCBzdWl0ZQppbnQgbWFpbigpIHsKICAgZGVtbyBhOwogICBhLnByb3ZlKCk7ICAgCiAgIGRlbW8gYiA9IGE7CiAgIGEucHJvdmUoKTsgIAogICBiLnByb3ZlKCk7ICAgIAp9CiAgICA=