37 constexpr auto enum_names = magic_enum::enum_names<Enum>();
38 constexpr auto enum_size = enum_names.size();
39 constexpr auto MAX_SIZE = 20 * enum_size;
40 constexpr auto arr = [&]()
42 auto output_str = std::array<char, MAX_SIZE>{};
44 std::ranges::to<std::vector<char>>();
45 std::ranges::copy(tmp_vec, output_str.begin());
46 return std::make_pair(tmp_vec.size(), output_str);
48 static constexpr auto output_arr = [&]()
50 auto output_str = std::array<char, arr.first>{};
51 std::ranges::copy(arr.second | std::ranges::views::take(arr.first), output_str.begin());
54 constexpr auto output_str_vs = [&]()
56 auto arr = std::array<std::string_view, enum_size>{};
57 auto front_iter = output_arr.begin();
59 for (
auto [enum_name, enum_name_view] : std::views::zip(enum_names, arr))
61 const auto distance = enum_name.size();
63 enum_name_view = std::string_view{ front_iter, front_iter + distance };
64 front_iter += distance;
75 constexpr auto enum_name = magic_enum::enum_name<decltype(EnumVal)>(EnumVal);
76 static constexpr auto enum_arr = [&]()
78 auto arr = std::array<char, enum_name.size()>{};
81 std::ranges::copy(tmp_vec, arr.begin());
84 return std::string_view{ enum_arr.begin(), enum_arr.end() };