#include <iostream>
class noncopyable {
public:
noncopyable() = default;
noncopyable(const noncopyable&) = delete;
noncopyable(noncopyable&&) = delete;
void operator=(const noncopyable&) = delete;
void operator=(noncopyable&&) = delete;
};
class foo : public noncopyable {
public:
foo() = default;
foo(const foo&)
{
puts("I'm copied!");
}
};
int main() {
foo f;
foo f2(f);
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKY2xhc3Mgbm9uY29weWFibGUgewpwdWJsaWM6Cglub25jb3B5YWJsZSgpID0gZGVmYXVsdDsKCW5vbmNvcHlhYmxlKGNvbnN0IG5vbmNvcHlhYmxlJikgPSBkZWxldGU7Cglub25jb3B5YWJsZShub25jb3B5YWJsZSYmKSA9IGRlbGV0ZTsKCXZvaWQgb3BlcmF0b3I9KGNvbnN0IG5vbmNvcHlhYmxlJikgPSBkZWxldGU7Cgl2b2lkIG9wZXJhdG9yPShub25jb3B5YWJsZSYmKSA9IGRlbGV0ZTsKfTsKCmNsYXNzIGZvbyA6IHB1YmxpYyBub25jb3B5YWJsZSB7CnB1YmxpYzoKCWZvbygpID0gZGVmYXVsdDsKCWZvbyhjb25zdCBmb28mKQoJewoJCXB1dHMoIkknbSBjb3BpZWQhIik7Cgl9Cn07CgppbnQgbWFpbigpIHsKCWZvbyBmOwoJZm9vIGYyKGYpOwoJcmV0dXJuIDA7Cn0=