#include <map>
#include <string>
#include <iostream>
enum class foo {
bar, baz, qux
};
foo meh(const std::string& mooh) {
static std::map<std::string, foo> map{
{ "bar", foo::bar },
{ "baz", foo::baz },
{ "qux", foo::qux },
};
return map.at(mooh);
}
int main() {
std::cout << (meh("bar") == foo::bar) << '\n';
std::cout << (meh("baz") == foo::baz) << '\n';
std::cout << (meh("qux") == foo::qux) << '\n';
meh("out_of_range");
}
I2luY2x1ZGUgPG1hcD4KI2luY2x1ZGUgPHN0cmluZz4KI2luY2x1ZGUgPGlvc3RyZWFtPgoKZW51bSBjbGFzcyBmb28gewogIGJhciwgYmF6LCBxdXgKfTsKCmZvbyBtZWgoY29uc3Qgc3RkOjpzdHJpbmcmIG1vb2gpIHsKICBzdGF0aWMgc3RkOjptYXA8c3RkOjpzdHJpbmcsIGZvbz4gbWFwewogICAgeyAiYmFyIiwgZm9vOjpiYXIgfSwKICAgIHsgImJheiIsIGZvbzo6YmF6IH0sCiAgICB7ICJxdXgiLCBmb286OnF1eCB9LAogIH07CgogIHJldHVybiBtYXAuYXQobW9vaCk7Cn0KCmludCBtYWluKCkgewogIHN0ZDo6Y291dCA8PCAobWVoKCJiYXIiKSA9PSBmb286OmJhcikgPDwgJ1xuJzsKICBzdGQ6OmNvdXQgPDwgKG1laCgiYmF6IikgPT0gZm9vOjpiYXopIDw8ICdcbic7CiAgc3RkOjpjb3V0IDw8IChtZWgoInF1eCIpID09IGZvbzo6cXV4KSA8PCAnXG4nOwogIG1laCgib3V0X29mX3JhbmdlIik7Cn0K