diff --git a/include/magic_enum.hpp b/include/magic_enum.hpp index 21b070d..6c77000 100644 --- a/include/magic_enum.hpp +++ b/include/magic_enum.hpp @@ -138,8 +138,8 @@ using char_type = string_view::value_type; static_assert(std::is_same_v, "magic_enum::customize requires same string_view::value_type and string::value_type"); static_assert([] { if constexpr (std::is_same_v) { - constexpr const char c[] = "abcdefghijklmnopqrstuvwxyz_ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; - constexpr const wchar_t wc[] = L"abcdefghijklmnopqrstuvwxyz_ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; + constexpr const char c[] = "abcdefghijklmnopqrstuvwxyz_ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789|"; + constexpr const wchar_t wc[] = L"abcdefghijklmnopqrstuvwxyz_ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789|"; static_assert(std::size(c) == std::size(wc), "magic_enum::customize identifier characters are multichars in wchar_t."); for (std::size_t i = 0; i < std::size(c); ++i) { @@ -263,10 +263,10 @@ class static_str { private: template - constexpr static_str(const char* str, std::integer_sequence) noexcept : chars_{static_cast(str[I])..., '\0'} {} + constexpr static_str(const char* str, std::integer_sequence) noexcept : chars_{static_cast(str[I])..., static_cast('\0')} {} template - constexpr static_str(string_view str, std::integer_sequence) noexcept : chars_{str[I]..., '\0'} {} + constexpr static_str(string_view str, std::integer_sequence) noexcept : chars_{str[I]..., static_cast('\0')} {} char_type chars_[static_cast(N) + 1]; }; @@ -290,7 +290,7 @@ class static_str<0> { template > class case_insensitive { static constexpr char_type to_lower(char_type c) noexcept { - return (c >= 'A' && c <= 'Z') ? static_cast(c + ('a' - 'A')) : c; + return (c >= static_cast('A') && c <= static_cast('Z')) ? static_cast(c + (static_cast('a') - static_cast('A'))) : c; } public: @@ -1234,7 +1234,7 @@ template // Returns name from enum-flags value. // If enum-flags value does not have name or value out of range, returns empty string. template -[[nodiscard]] auto enum_flags_name(E value, char_type sep = '|') -> detail::enable_if_t { +[[nodiscard]] auto enum_flags_name(E value, char_type sep = static_cast('|')) -> detail::enable_if_t { using D = std::decay_t; using U = underlying_type_t; constexpr auto S = detail::enum_subtype::flags; diff --git a/include/magic_enum_containers.hpp b/include/magic_enum_containers.hpp index a13a6bb..db4e912 100644 --- a/include/magic_enum_containers.hpp +++ b/include/magic_enum_containers.hpp @@ -546,7 +546,7 @@ class bitset { } } - constexpr explicit bitset(detail::raw_access_t, string_view sv, string_view::size_type pos = 0, string_view::size_type n = string_view::npos, char_type zero = '0', char_type one = '1') + constexpr explicit bitset(detail::raw_access_t, string_view sv, string_view::size_type pos = 0, string_view::size_type n = string_view::npos, char_type zero = static_cast('0'), char_type one = static_cast('1')) : a{{}} { std::size_t i{}; for (auto c : sv.substr(pos, n)) { @@ -562,8 +562,8 @@ class bitset { } } - constexpr explicit bitset(detail::raw_access_t, const char_type* str, std::size_t n = ~std::size_t{}, char_type zero = '0', char_type one = '1') - : bitset(std::string_view{str, (std::min)(std::char_traits::length(str), n)}, 0, n, zero, one) {} + constexpr explicit bitset(detail::raw_access_t, const char_type* str, std::size_t n = ~std::size_t{}, char_type zero = static_cast('0'), char_type one = static_cast('1')) + : bitset(string_view{str, (std::min)(std::char_traits::length(str), n)}, 0, n, zero, one) {} constexpr bitset(std::initializer_list starters) : a{{}} { if constexpr (magic_enum::detail::subtype_v == magic_enum::detail::enum_subtype::flags) { @@ -591,7 +591,7 @@ class bitset { } template > - constexpr explicit bitset(string_view sv, Cmp&& cmp = {}, char_type sep = '|') { + constexpr explicit bitset(string_view sv, Cmp&& cmp = {}, char_type sep = static_cast('|')) { for (std::size_t to{}; (to = magic_enum::detail::find(sv, sep)) != string_view::npos; sv.remove_prefix(to + 1)) { if (auto v = enum_cast(sv.substr(0, to), cmp)) { set(v); @@ -756,7 +756,7 @@ class bitset { return res; } - [[nodiscard]] string to_string(char_type sep = '|') const { + [[nodiscard]] string to_string(char_type sep = static_cast('|')) const { string name; for (auto& e : enum_values()) { @@ -771,7 +771,7 @@ class bitset { return name; } - [[nodiscard]] string to_string(detail::raw_access_t, char_type zero = '0', char_type one = '1') const { + [[nodiscard]] string to_string(detail::raw_access_t, char_type zero = static_cast('0'), char_type one = static_cast('1')) const { string name; name.reserve(size()); for (std::size_t i{}; i < size(); ++i) {