#include <cstring>
#include <cstdio>
#include <memory>
using namespace std;
struct some {
static const size_t name_length = 64;
char name[name_length+1];
some() = default;
some(const some& s) {
memcpy(name, s.name, strlen(s.name)+1);
}
// other constructors...
void set_name(const char* s) {
auto len = strlen(s);
if (len > name_length) {
len = name_length;
}
memcpy(name, s, len);
name[len] = '\0';
}
};
int main() {
some s1, s2;
s2.set_name("hello");
s1 = s2;
s1.name[0] = 'H';
puts(s1.name);
puts(s2.name);
return 0;
}
I2luY2x1ZGUgPGNzdHJpbmc+CiNpbmNsdWRlIDxjc3RkaW8+CiNpbmNsdWRlIDxtZW1vcnk+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgpzdHJ1Y3Qgc29tZSB7CglzdGF0aWMgY29uc3Qgc2l6ZV90IG5hbWVfbGVuZ3RoID0gNjQ7CgkKCWNoYXIgbmFtZVtuYW1lX2xlbmd0aCsxXTsKCQoJc29tZSgpID0gZGVmYXVsdDsKCQoJc29tZShjb25zdCBzb21lJiBzKSB7CgkJbWVtY3B5KG5hbWUsIHMubmFtZSwgc3RybGVuKHMubmFtZSkrMSk7Cgl9CgkKCS8vIG90aGVyIGNvbnN0cnVjdG9ycy4uLgoJCgl2b2lkIHNldF9uYW1lKGNvbnN0IGNoYXIqIHMpIHsKCQlhdXRvIGxlbiA9IHN0cmxlbihzKTsKCQlpZiAobGVuID4gbmFtZV9sZW5ndGgpIHsKCQkJbGVuID0gbmFtZV9sZW5ndGg7CgkJfQoJCW1lbWNweShuYW1lLCBzLCBsZW4pOwoJCW5hbWVbbGVuXSA9ICdcMCc7Cgl9Cn07CgppbnQgbWFpbigpIHsKCXNvbWUgczEsIHMyOwoJczIuc2V0X25hbWUoImhlbGxvIik7CgkKCXMxID0gczI7CglzMS5uYW1lWzBdID0gJ0gnOwoJCglwdXRzKHMxLm5hbWUpOwoJcHV0cyhzMi5uYW1lKTsKCQoJcmV0dXJuIDA7Cn0=