#include <map>
#include <tuple>
#include <iostream>
class NixeCopy {
public:
NixeCopy(NixeCopy const&) = delete;
NixeCopy(NixeCopy&&) = delete;
NixeCopy& operator =(NixeCopy const&) = delete;
NixeCopy& operator =(NixeCopy&&) = delete;
NixeCopy(int a, int b) : a(a), b(b) {}
int dings() const { return a + b; }
private:
int a;
int b;
};
int main() {
std::map<int, NixeCopy> m;
m.emplace(
std::piecewise_construct,
std::make_tuple(42),
std::make_tuple(222, 444));
auto it = m.find(42);
if (it != m.end()) {
std::cout << "found: " << it->second.dings() << "\n";
} else {
std::cout << "not found :(\n";
}
}
I2luY2x1ZGUgPG1hcD4KI2luY2x1ZGUgPHR1cGxlPgojaW5jbHVkZSA8aW9zdHJlYW0+CgpjbGFzcyBOaXhlQ29weSB7CnB1YmxpYzoKICAgIE5peGVDb3B5KE5peGVDb3B5IGNvbnN0JikgPSBkZWxldGU7CiAgICBOaXhlQ29weShOaXhlQ29weSYmKSA9IGRlbGV0ZTsKICAgIE5peGVDb3B5JiBvcGVyYXRvciA9KE5peGVDb3B5IGNvbnN0JikgPSBkZWxldGU7CiAgICBOaXhlQ29weSYgb3BlcmF0b3IgPShOaXhlQ29weSYmKSA9IGRlbGV0ZTsKCiAgICBOaXhlQ29weShpbnQgYSwgaW50IGIpIDogYShhKSwgYihiKSB7fQoKICAgIGludCBkaW5ncygpIGNvbnN0IHsgcmV0dXJuIGEgKyBiOyB9Cgpwcml2YXRlOgogICAgaW50IGE7CiAgICBpbnQgYjsKfTsKCmludCBtYWluKCkgewogICAgc3RkOjptYXA8aW50LCBOaXhlQ29weT4gbTsKICAgIG0uZW1wbGFjZSgKICAgICAgICBzdGQ6OnBpZWNld2lzZV9jb25zdHJ1Y3QsCiAgICAgICAgc3RkOjptYWtlX3R1cGxlKDQyKSwKICAgICAgICBzdGQ6Om1ha2VfdHVwbGUoMjIyLCA0NDQpKTsKCiAgICBhdXRvIGl0ID0gbS5maW5kKDQyKTsKICAgIGlmIChpdCAhPSBtLmVuZCgpKSB7CiAgICAgICAgc3RkOjpjb3V0IDw8ICJmb3VuZDogIiA8PCBpdC0+c2Vjb25kLmRpbmdzKCkgPDwgIlxuIjsKICAgIH0gZWxzZSB7CiAgICAgICAgc3RkOjpjb3V0IDw8ICJub3QgZm91bmQgOihcbiI7CiAgICB9Cn0K