#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;
}