// Example program
#include <iostream>
#include <string>
#include <memory>
#include <map>
class Value
{
public:
Value & operator=(const Value&) = delete;
Value(const Value&) = delete;
Value() = default;
};
class Key
{
public:
Key & operator=(const Key&) = delete;
Key(const Key&) = delete;
Key() = default;
};
int main()
{
std::map<std::unique_ptr<Key>, std::unique_ptr<Value>> map_m;
std::unique_ptr<Key> k(new Key);
std::unique_ptr<Value> v(new Value);
map_m.insert(std::make_pair(std::move(k), std::move(v)));
return 0;
}
Ly8gRXhhbXBsZSBwcm9ncmFtCiNpbmNsdWRlIDxpb3N0cmVhbT4KI2luY2x1ZGUgPHN0cmluZz4KI2luY2x1ZGUgPG1lbW9yeT4KI2luY2x1ZGUgPG1hcD4KCmNsYXNzIFZhbHVlCnsKICAgIHB1YmxpYzoKICAgICAgICBWYWx1ZSAmIG9wZXJhdG9yPShjb25zdCBWYWx1ZSYpID0gZGVsZXRlOwogICAgICAgIFZhbHVlKGNvbnN0IFZhbHVlJikgPSBkZWxldGU7CiAgICAgICAgVmFsdWUoKSA9IGRlZmF1bHQ7Cn07CgpjbGFzcyBLZXkKewogICAgcHVibGljOgogICAgICAgIEtleSAmIG9wZXJhdG9yPShjb25zdCBLZXkmKSA9IGRlbGV0ZTsKICAgICAgICBLZXkoY29uc3QgS2V5JikgPSBkZWxldGU7CiAgICAgICAgS2V5KCkgPSBkZWZhdWx0Owp9OyAKCmludCBtYWluKCkKewogICAgc3RkOjptYXA8c3RkOjp1bmlxdWVfcHRyPEtleT4sIHN0ZDo6dW5pcXVlX3B0cjxWYWx1ZT4+IG1hcF9tOwogICAgCiAgICBzdGQ6OnVuaXF1ZV9wdHI8S2V5PiBrKG5ldyBLZXkpOwogICAgc3RkOjp1bmlxdWVfcHRyPFZhbHVlPiB2KG5ldyBWYWx1ZSk7CiAgICBtYXBfbS5pbnNlcnQoc3RkOjptYWtlX3BhaXIoc3RkOjptb3ZlKGspLCBzdGQ6Om1vdmUodikpKTsKICAgIAogICAgcmV0dXJuIDA7Cn0K