#include <vector>
struct notCopyable
{
notCopyable() = default;
notCopyable(const notCopyable&) = delete;
notCopyable& operator = (const notCopyable&) = delete;
notCopyable(notCopyable&&) = default;
notCopyable& operator = (notCopyable&&) = default;
};
int main()
{
std::vector<notCopyable> v;
notCopyable nc;
v.push_back(notCopyable{});
v.emplace_back();
v.push_back(std::move(nc));
}
I2luY2x1ZGUgPHZlY3Rvcj4KCnN0cnVjdCBub3RDb3B5YWJsZQp7CiAgICBub3RDb3B5YWJsZSgpID0gZGVmYXVsdDsKICAgIG5vdENvcHlhYmxlKGNvbnN0IG5vdENvcHlhYmxlJikgPSBkZWxldGU7CiAgICBub3RDb3B5YWJsZSYgb3BlcmF0b3IgPSAoY29uc3Qgbm90Q29weWFibGUmKSA9IGRlbGV0ZTsKCiAgICBub3RDb3B5YWJsZShub3RDb3B5YWJsZSYmKSA9IGRlZmF1bHQ7CiAgICBub3RDb3B5YWJsZSYgb3BlcmF0b3IgPSAobm90Q29weWFibGUmJikgPSBkZWZhdWx0Owp9OwoKaW50IG1haW4oKQp7CiAgICBzdGQ6OnZlY3Rvcjxub3RDb3B5YWJsZT4gdjsKICAgIG5vdENvcHlhYmxlIG5jOwoKICAgIHYucHVzaF9iYWNrKG5vdENvcHlhYmxle30pOwogICAgdi5lbXBsYWNlX2JhY2soKTsKICAgIHYucHVzaF9iYWNrKHN0ZDo6bW92ZShuYykpOwp9