#include <iostream>
#include <functional>
#include <unordered_set>
struct X
{
std::string key_;
};
int main() {
std::unordered_set<X,
std::function<size_t(const X&)>,
std::function<bool(const X&, const X&)> > s{
5, // initial bucket count
[](const X& x) { return std::hash<decltype(x.key_)>()(x.key_); },
[](const X& lhs, const X& rhs) { return lhs.key_ == rhs.key_; }
};
s.insert({"one"});
s.insert({"two"});
s.insert({"three"});
for (auto& x : s)
std::cout << x.key_ << '\n';
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8ZnVuY3Rpb25hbD4KI2luY2x1ZGUgPHVub3JkZXJlZF9zZXQ+CgpzdHJ1Y3QgWAp7CiAgICBzdGQ6OnN0cmluZyBrZXlfOwp9OwoKaW50IG1haW4oKSB7CglzdGQ6OnVub3JkZXJlZF9zZXQ8WCwKCSAgICAgICAgICAgICAgICAgICBzdGQ6OmZ1bmN0aW9uPHNpemVfdChjb25zdCBYJik+LAoJICAgICAgICAgICAgICAgICAgIHN0ZDo6ZnVuY3Rpb248Ym9vbChjb25zdCBYJiwgY29uc3QgWCYpPiA+IHN7CgkgICAgICAgICA1LCAvLyBpbml0aWFsIGJ1Y2tldCBjb3VudAoJICAgICAgICAgW10oY29uc3QgWCYgeCkgeyByZXR1cm4gc3RkOjpoYXNoPGRlY2x0eXBlKHgua2V5Xyk+KCkoeC5rZXlfKTsgfSwKCSAgICAgICAgIFtdKGNvbnN0IFgmIGxocywgY29uc3QgWCYgcmhzKSB7IHJldHVybiBsaHMua2V5XyA9PSByaHMua2V5XzsgfQoJICAgICB9OwogICAgcy5pbnNlcnQoeyJvbmUifSk7CiAgICBzLmluc2VydCh7InR3byJ9KTsKICAgIHMuaW5zZXJ0KHsidGhyZWUifSk7Cglmb3IgKGF1dG8mIHggOiBzKQoJICAgIHN0ZDo6Y291dCA8PCB4LmtleV8gPDwgJ1xuJzsKfQ==