#include <set>
#include <string>
#include <iostream>
struct test {
std::string key;
std::string data;
};
auto comp = [](const test& t1, const test& t2) { return t1.key < t2.key; };
std::set<test, decltype(comp)> s(comp);
int main() {
test newmember;
newmember.key = "key";
newmember.data = "data";
s.insert(newmember);
auto it = s.find(test{ "key", "" });
std::cout << "(1) " << it->key << ", " << it->data << std::endl;
newmember.data = "otherdata";
s.insert(newmember); // Insertion fails!
for (auto const& t : s) {
std::cout << "(2) " << t.key << ", " << t.data << std::endl;
}
return 0;
}
I2luY2x1ZGUgPHNldD4KI2luY2x1ZGUgPHN0cmluZz4KI2luY2x1ZGUgPGlvc3RyZWFtPgoKc3RydWN0IHRlc3QgewogICAgc3RkOjpzdHJpbmcga2V5OwogICAgc3RkOjpzdHJpbmcgZGF0YTsKfTsKCmF1dG8gY29tcCA9IFtdKGNvbnN0IHRlc3QmIHQxLCBjb25zdCB0ZXN0JiB0MikgeyByZXR1cm4gdDEua2V5IDwgdDIua2V5OyB9OwpzdGQ6OnNldDx0ZXN0LCBkZWNsdHlwZShjb21wKT4gcyhjb21wKTsKCmludCBtYWluKCkgewogICAgdGVzdCBuZXdtZW1iZXI7CiAgICBuZXdtZW1iZXIua2V5ID0gImtleSI7CiAgICBuZXdtZW1iZXIuZGF0YSA9ICJkYXRhIjsKICAgIHMuaW5zZXJ0KG5ld21lbWJlcik7CgogICAgYXV0byBpdCA9IHMuZmluZCh0ZXN0eyAia2V5IiwgIiIgfSk7CiAgICBzdGQ6OmNvdXQgPDwgIigxKSAiIDw8IGl0LT5rZXkgPDwgIiwgIiA8PCBpdC0+ZGF0YSA8PCBzdGQ6OmVuZGw7CgogICAgbmV3bWVtYmVyLmRhdGEgPSAib3RoZXJkYXRhIjsKICAgIHMuaW5zZXJ0KG5ld21lbWJlcik7ICAvLyBJbnNlcnRpb24gZmFpbHMhCiAgICBmb3IgKGF1dG8gY29uc3QmIHQgOiBzKSB7CiAgICAgICAgc3RkOjpjb3V0IDw8ICIoMikgIiA8PCB0LmtleSA8PCAiLCAiIDw8IHQuZGF0YSA8PCBzdGQ6OmVuZGw7CiAgICB9CgoJcmV0dXJuIDA7Cn0=