#include #include #include enum class T { NONE, A, Bb, Ccc, Dddd, Eeeee, Ff, DEFAULT }; struct TName2 { std::string_view name; T t; bool operator==(std::string_view n) const noexcept { return name == n; } }; std::array tnames2 = {{ {"None", T::NONE}, {"A", T::A}, {"Bb", T::Bb}, {"Ccc", T::Ccc}, {"Dddd", T::Dddd}, {"Eeeee", T::Eeeee}, {"Ff", T::Ff}, {"DEFAULT", T::DEFAULT}, }}; T GetByName2(std::string_view name) { if (name.empty()) { return T::DEFAULT; } auto it = std::find(begin(tnames2), end(tnames2), name); return it != end(tnames2) ? it->t : T::DEFAULT; }