Coverage Report

Created: 2026-04-01 06:31

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/magic_enum/include/magic_enum/magic_enum.hpp
Line
Count
Source
1
//  __  __             _        ______                          _____
2
// |  \/  |           (_)      |  ____|                        / ____|_     _
3
// | \  / | __ _  __ _ _  ___  | |__   _ __  _   _ _ __ ___   | |   _| |_ _| |_
4
// | |\/| |/ _` |/ _` | |/ __| |  __| | '_ \| | | | '_ ` _ \  | |  |_   _|_   _|
5
// | |  | | (_| | (_| | | (__  | |____| | | | |_| | | | | | | | |____|_|   |_|
6
// |_|  |_|\__,_|\__, |_|\___| |______|_| |_|\__,_|_| |_| |_|  \_____|
7
//                __/ | https://github.com/Neargye/magic_enum
8
//               |___/  version 0.9.7
9
//
10
// Licensed under the MIT License <http://opensource.org/licenses/MIT>.
11
// SPDX-License-Identifier: MIT
12
// Copyright (c) 2019 - 2024 Daniil Goncharov <neargye@gmail.com>.
13
//
14
// Permission is hereby  granted, free of charge, to any  person obtaining a copy
15
// of this software and associated  documentation files (the "Software"), to deal
16
// in the Software  without restriction, including without  limitation the rights
17
// to  use, copy,  modify, merge,  publish, distribute,  sublicense, and/or  sell
18
// copies  of  the Software,  and  to  permit persons  to  whom  the Software  is
19
// furnished to do so, subject to the following conditions:
20
//
21
// The above copyright notice and this permission notice shall be included in all
22
// copies or substantial portions of the Software.
23
//
24
// THE SOFTWARE  IS PROVIDED "AS  IS", WITHOUT WARRANTY  OF ANY KIND,  EXPRESS OR
25
// IMPLIED,  INCLUDING BUT  NOT  LIMITED TO  THE  WARRANTIES OF  MERCHANTABILITY,
26
// FITNESS FOR  A PARTICULAR PURPOSE AND  NONINFRINGEMENT. IN NO EVENT  SHALL THE
27
// AUTHORS  OR COPYRIGHT  HOLDERS  BE  LIABLE FOR  ANY  CLAIM,  DAMAGES OR  OTHER
28
// LIABILITY, WHETHER IN AN ACTION OF  CONTRACT, TORT OR OTHERWISE, ARISING FROM,
29
// OUT OF OR IN CONNECTION WITH THE SOFTWARE  OR THE USE OR OTHER DEALINGS IN THE
30
// SOFTWARE.
31
32
#ifndef NEARGYE_MAGIC_ENUM_HPP
33
#define NEARGYE_MAGIC_ENUM_HPP
34
35
#define MAGIC_ENUM_VERSION_MAJOR 0
36
#define MAGIC_ENUM_VERSION_MINOR 9
37
#define MAGIC_ENUM_VERSION_PATCH 7
38
39
#ifndef MAGIC_ENUM_USE_STD_MODULE
40
#include <array>
41
#include <cstddef>
42
#include <cstdint>
43
#include <functional>
44
#include <limits>
45
#include <type_traits>
46
#include <utility>
47
#endif
48
49
#if defined(MAGIC_ENUM_CONFIG_FILE)
50
#  include MAGIC_ENUM_CONFIG_FILE
51
#endif
52
53
#ifndef MAGIC_ENUM_USE_STD_MODULE
54
#if !defined(MAGIC_ENUM_USING_ALIAS_OPTIONAL)
55
#  include <optional>
56
#endif
57
#if !defined(MAGIC_ENUM_USING_ALIAS_STRING)
58
#  include <string>
59
#endif
60
#if !defined(MAGIC_ENUM_USING_ALIAS_STRING_VIEW)
61
#  include <string_view>
62
#endif
63
#endif
64
65
#if defined(MAGIC_ENUM_NO_ASSERT)
66
#  define MAGIC_ENUM_ASSERT(...) static_cast<void>(0)
67
#elif !defined(MAGIC_ENUM_ASSERT)
68
#  include <cassert>
69
41.6k
#  define MAGIC_ENUM_ASSERT(...) assert((__VA_ARGS__))
70
#endif
71
72
#if defined(__clang__)
73
#  pragma clang diagnostic push
74
#  pragma clang diagnostic ignored "-Wunknown-warning-option"
75
#  pragma clang diagnostic ignored "-Wenum-constexpr-conversion"
76
#  pragma clang diagnostic ignored "-Wuseless-cast" // suppresses 'static_cast<char_type>('\0')' for char_type = char (common on Linux).
77
#elif defined(__GNUC__)
78
#  pragma GCC diagnostic push
79
#  pragma GCC diagnostic ignored "-Wmaybe-uninitialized" // May be used uninitialized 'return {};'.
80
#  pragma GCC diagnostic ignored "-Wuseless-cast" // suppresses 'static_cast<char_type>('\0')' for char_type = char (common on Linux).
81
#elif defined(_MSC_VER)
82
#  pragma warning(push)
83
#  pragma warning(disable : 26495) // Variable 'static_str<N>::chars_' is uninitialized.
84
#  pragma warning(disable : 28020) // Arithmetic overflow: Using operator '-' on a 4 byte value and then casting the result to a 8 byte value.
85
#  pragma warning(disable : 26451) // The expression '0<=_Param_(1)&&_Param_(1)<=1-1' is not true at this call.
86
#  pragma warning(disable : 4514) // Unreferenced inline function has been removed.
87
#endif
88
89
// Checks magic_enum compiler compatibility.
90
#if defined(__clang__) && __clang_major__ >= 5 || defined(__GNUC__) && __GNUC__ >= 9 || defined(_MSC_VER) && _MSC_VER >= 1910 || defined(__RESHARPER__)
91
#  undef  MAGIC_ENUM_SUPPORTED
92
#  define MAGIC_ENUM_SUPPORTED 1
93
#endif
94
95
// Checks magic_enum compiler aliases compatibility.
96
#if defined(__clang__) && __clang_major__ >= 5 || defined(__GNUC__) && __GNUC__ >= 9 || defined(_MSC_VER) && _MSC_VER >= 1920
97
#  undef  MAGIC_ENUM_SUPPORTED_ALIASES
98
#  define MAGIC_ENUM_SUPPORTED_ALIASES 1
99
#endif
100
101
// Specify the calling convention for compilers that need it in order to get reliable mangled names under different
102
// compiler flags. In particular, MSVC allows changing the default calling convention on x86.
103
#if defined(__clang__) || defined(__GNUC__)
104
#define MAGIC_ENUM_CALLING_CONVENTION
105
#elif defined(_MSC_VER)
106
#define MAGIC_ENUM_CALLING_CONVENTION __cdecl
107
#endif
108
109
// Enum value must be greater or equals than MAGIC_ENUM_RANGE_MIN. By default MAGIC_ENUM_RANGE_MIN = -128.
110
// If need another min range for all enum types by default, redefine the macro MAGIC_ENUM_RANGE_MIN.
111
#if !defined(MAGIC_ENUM_RANGE_MIN)
112
#  define MAGIC_ENUM_RANGE_MIN -128
113
#endif
114
115
// Enum value must be less or equals than MAGIC_ENUM_RANGE_MAX. By default MAGIC_ENUM_RANGE_MAX = 127.
116
// If need another max range for all enum types by default, redefine the macro MAGIC_ENUM_RANGE_MAX.
117
#if !defined(MAGIC_ENUM_RANGE_MAX)
118
#  define MAGIC_ENUM_RANGE_MAX 127
119
#endif
120
121
// Improve ReSharper C++ intellisense performance with builtins, avoiding unnecessary template instantiations.
122
#if defined(__RESHARPER__)
123
#  undef MAGIC_ENUM_GET_ENUM_NAME_BUILTIN
124
#  undef MAGIC_ENUM_GET_TYPE_NAME_BUILTIN
125
#  if __RESHARPER__ >= 20230100
126
#    define MAGIC_ENUM_GET_ENUM_NAME_BUILTIN(V) __rscpp_enumerator_name(V)
127
#    define MAGIC_ENUM_GET_TYPE_NAME_BUILTIN(T) __rscpp_type_name<T>()
128
#  else
129
#    define MAGIC_ENUM_GET_ENUM_NAME_BUILTIN(V) nullptr
130
#    define MAGIC_ENUM_GET_TYPE_NAME_BUILTIN(T) nullptr
131
#  endif
132
#endif
133
134
namespace magic_enum {
135
136
// If need another optional type, define the macro MAGIC_ENUM_USING_ALIAS_OPTIONAL.
137
#if defined(MAGIC_ENUM_USING_ALIAS_OPTIONAL)
138
MAGIC_ENUM_USING_ALIAS_OPTIONAL
139
#else
140
using std::optional;
141
#endif
142
143
// If need another string_view type, define the macro MAGIC_ENUM_USING_ALIAS_STRING_VIEW.
144
#if defined(MAGIC_ENUM_USING_ALIAS_STRING_VIEW)
145
MAGIC_ENUM_USING_ALIAS_STRING_VIEW
146
#else
147
using std::string_view;
148
#endif
149
150
// If need another string type, define the macro MAGIC_ENUM_USING_ALIAS_STRING.
151
#if defined(MAGIC_ENUM_USING_ALIAS_STRING)
152
MAGIC_ENUM_USING_ALIAS_STRING
153
#else
154
using std::string;
155
#endif
156
157
using char_type = string_view::value_type;
158
static_assert(std::is_same_v<string_view::value_type, string::value_type>, "magic_enum::customize requires same string_view::value_type and string::value_type");
159
static_assert([] {
160
  if constexpr (std::is_same_v<char_type, wchar_t>) {
161
    constexpr const char     c[] =  "abcdefghijklmnopqrstuvwxyz_ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789|";
162
    constexpr const wchar_t wc[] = L"abcdefghijklmnopqrstuvwxyz_ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789|";
163
    static_assert(std::size(c) == std::size(wc), "magic_enum::customize identifier characters are multichars in wchar_t.");
164
165
    for (std::size_t i = 0; i < std::size(c); ++i) {
166
      if (c[i] != wc[i]) {
167
        return false;
168
      }
169
    }
170
  }
171
  return true;
172
} (), "magic_enum::customize wchar_t is not compatible with ASCII.");
173
174
namespace customize {
175
  template <typename E, typename = void>
176
  struct enum_range;
177
}
178
179
namespace detail {
180
  template<typename E, typename = void>
181
  constexpr inline std::size_t prefix_length_or_zero = 0;
182
183
  template<typename E>
184
  constexpr inline auto prefix_length_or_zero<E, std::void_t<decltype(customize::enum_range<E>::prefix_length)>> = std::size_t{customize::enum_range<E>::prefix_length};
185
}
186
187
namespace customize {
188
189
template <bool IsFlags = false, int Min = MAGIC_ENUM_RANGE_MIN, int Max = MAGIC_ENUM_RANGE_MAX, std::size_t PrefixLength = 0>
190
struct adl_info_holder {
191
  constexpr static int max = Max;
192
  constexpr static int min = Min;
193
  constexpr static bool is_flags = IsFlags;
194
  constexpr static std::size_t prefix_length = PrefixLength;
195
196
  template<int min, int max>
197
  constexpr static adl_info_holder<IsFlags, min, max, PrefixLength> minmax() { return {}; }
198
199
  template<bool is_flag>
200
  constexpr static adl_info_holder<is_flag, Min, Max, PrefixLength> flag() { return {}; }
201
202
  template<std::size_t prefix_len>
203
  constexpr static adl_info_holder<IsFlags, Min, Max, prefix_len> prefix() { return {}; }
204
};
205
206
0
constexpr adl_info_holder<> adl_info() { return {}; }
207
208
// Enum value must be in range [MAGIC_ENUM_RANGE_MIN, MAGIC_ENUM_RANGE_MAX]. By default MAGIC_ENUM_RANGE_MIN = -128, MAGIC_ENUM_RANGE_MAX = 127.
209
// If need another range for all enum types by default, redefine the macro MAGIC_ENUM_RANGE_MIN and MAGIC_ENUM_RANGE_MAX.
210
// If need another range for specific enum type, add specialization enum_range for necessary enum type.
211
template <typename E, typename>
212
struct enum_range {
213
  static constexpr int min = MAGIC_ENUM_RANGE_MIN;
214
  static constexpr int max = MAGIC_ENUM_RANGE_MAX;
215
};
216
217
template <typename E>
218
struct enum_range<E, decltype(void(magic_enum_define_range_adl(E{})))> : decltype(magic_enum_define_range_adl(E{})) {};
219
220
static_assert(MAGIC_ENUM_RANGE_MAX > MAGIC_ENUM_RANGE_MIN, "MAGIC_ENUM_RANGE_MAX must be greater than MAGIC_ENUM_RANGE_MIN.");
221
222
namespace detail {
223
224
enum class customize_tag {
225
  default_tag,
226
  invalid_tag,
227
  custom_tag
228
};
229
230
} // namespace magic_enum::customize::detail
231
232
class customize_t : public std::pair<detail::customize_tag, string_view> {
233
 public:
234
0
  constexpr customize_t(string_view srt) : std::pair<detail::customize_tag, string_view>{detail::customize_tag::custom_tag, srt} {}
235
0
  constexpr customize_t(const char_type* srt) : customize_t{string_view{srt}} {}
236
0
  constexpr customize_t(detail::customize_tag tag) : std::pair<detail::customize_tag, string_view>{tag, string_view{}} {
237
0
    MAGIC_ENUM_ASSERT(tag != detail::customize_tag::custom_tag);
238
0
  }
239
};
240
241
// Default customize.
242
inline constexpr auto default_tag = customize_t{detail::customize_tag::default_tag};
243
// Invalid customize.
244
inline constexpr auto invalid_tag = customize_t{detail::customize_tag::invalid_tag};
245
246
// If need custom names for enum, add specialization enum_name for necessary enum type.
247
template <typename E>
248
0
constexpr customize_t enum_name(E) noexcept {
249
0
  return default_tag;
250
0
}
251
252
// If need custom type name for enum, add specialization enum_type_name for necessary enum type.
253
template <typename E>
254
constexpr customize_t enum_type_name() noexcept {
255
  return default_tag;
256
}
257
258
} // namespace magic_enum::customize
259
260
namespace detail {
261
262
template <typename T>
263
struct supported
264
#if defined(MAGIC_ENUM_SUPPORTED) || defined(MAGIC_ENUM_NO_CHECK_SUPPORT)
265
  : std::true_type {};
266
#else
267
  : std::false_type {};
268
#endif
269
270
template <auto V, typename E = std::decay_t<decltype(V)>, std::enable_if_t<std::is_enum_v<E>, int> = 0>
271
using enum_constant = std::integral_constant<E, V>;
272
273
template <typename... T>
274
inline constexpr bool always_false_v = false;
275
276
template <typename T, typename = void>
277
struct has_is_flags : std::false_type {};
278
279
template <typename T>
280
struct has_is_flags<T, std::void_t<decltype(customize::enum_range<T>::is_flags)>> : std::bool_constant<std::is_same_v<bool, std::decay_t<decltype(customize::enum_range<T>::is_flags)>>> {};
281
282
template <typename T, typename = void>
283
struct range_min : std::integral_constant<int, MAGIC_ENUM_RANGE_MIN> {};
284
285
template <typename T>
286
struct range_min<T, std::void_t<decltype(customize::enum_range<T>::min)>> : std::integral_constant<decltype(customize::enum_range<T>::min), customize::enum_range<T>::min> {};
287
288
template <typename T, typename = void>
289
struct range_max : std::integral_constant<int, MAGIC_ENUM_RANGE_MAX> {};
290
291
template <typename T>
292
struct range_max<T, std::void_t<decltype(customize::enum_range<T>::max)>> : std::integral_constant<decltype(customize::enum_range<T>::max), customize::enum_range<T>::max> {};
293
294
struct str_view {
295
  const char* str_ = nullptr;
296
  std::size_t size_ = 0;
297
};
298
299
template <std::uint16_t N>
300
class static_str {
301
 public:
302
  constexpr explicit static_str(str_view str) noexcept : static_str{str.str_, std::make_integer_sequence<std::uint16_t, N>{}} {
303
    MAGIC_ENUM_ASSERT(str.size_ == N);
304
  }
305
306
  constexpr explicit static_str(const char* const str) noexcept : static_str{ str, std::make_integer_sequence<std::uint16_t, N>{} } {
307
  }
308
309
  constexpr explicit static_str(string_view str) noexcept : static_str{str.data(), std::make_integer_sequence<std::uint16_t, N>{}} {
310
    MAGIC_ENUM_ASSERT(str.size() == N);
311
  }
312
313
0
  constexpr const char_type* data() const noexcept { return chars_; }
314
315
0
  constexpr std::uint16_t size() const noexcept { return N; }
316
317
0
  constexpr string_view str() const noexcept { return string_view(data(), size()); }
318
319
 private:
320
  template <std::uint16_t... I>
321
  constexpr static_str(const char* str, std::integer_sequence<std::uint16_t, I...>) noexcept : chars_{static_cast<char_type>(str[I])..., static_cast<char_type>('\0')} {}
322
323
  template <std::uint16_t... I>
324
  constexpr static_str(string_view str, std::integer_sequence<std::uint16_t, I...>) noexcept : chars_{str[I]..., static_cast<char_type>('\0')} {}
325
326
  char_type chars_[static_cast<std::size_t>(N) + 1];
327
};
328
329
template <>
330
class static_str<0> {
331
 public:
332
  constexpr static_str() noexcept = default;
333
334
0
  constexpr static_str(str_view) noexcept {}
335
336
0
  constexpr static_str(string_view) noexcept {}
337
338
0
  constexpr const char_type* data() const noexcept { return chars_; }
339
340
0
  constexpr std::uint16_t size() const noexcept { return 0; }
341
342
0
  constexpr string_view str() const noexcept { return string_view(data(), size()); }
343
344
private:
345
  static constexpr char_type chars_[1] = {};
346
};
347
348
template <typename Op = std::equal_to<>>
349
class case_insensitive {
350
  static constexpr char_type to_lower(char_type c) noexcept {
351
    return (c >= static_cast<char_type>('A') && c <= static_cast<char_type>('Z')) ? static_cast<char_type>(c + (static_cast<char_type>('a') - static_cast<char_type>('A'))) : c;
352
  }
353
354
 public:
355
  template <typename L, typename R>
356
  constexpr auto operator()(L lhs, R rhs) const noexcept -> std::enable_if_t<std::is_same_v<std::decay_t<L>, char_type> && std::is_same_v<std::decay_t<R>, char_type>, bool> {
357
    return Op{}(to_lower(lhs), to_lower(rhs));
358
  }
359
};
360
361
0
constexpr std::size_t find(string_view str, char_type c) noexcept {
362
0
#if defined(__clang__) && __clang_major__ < 9 && defined(__GLIBCXX__) || defined(_MSC_VER) && _MSC_VER < 1920 && !defined(__clang__)
363
0
// https://stackoverflow.com/questions/56484834/constexpr-stdstring-viewfind-last-of-doesnt-work-on-clang-8-with-libstdc
364
0
// https://developercommunity.visualstudio.com/content/problem/360432/vs20178-regression-c-failed-in-test.html
365
0
  constexpr bool workaround = true;
366
0
#else
367
0
  constexpr bool workaround = false;
368
0
#endif
369
0
370
0
  if constexpr (workaround) {
371
0
    for (std::size_t i = 0; i < str.size(); ++i) {
372
0
      if (str[i] == c) {
373
0
        return i;
374
0
      }
375
0
    }
376
0
377
0
    return string_view::npos;
378
0
  } else {
379
0
    return str.find(c);
380
0
  }
381
0
}
382
383
template <typename BinaryPredicate>
384
inline constexpr bool is_default_predicate_v = std::is_same_v<std::decay_t<BinaryPredicate>, std::equal_to<string_view::value_type>> || std::is_same_v<std::decay_t<BinaryPredicate>, std::equal_to<>>;
385
386
387
template <typename BinaryPredicate>
388
inline constexpr bool is_nothrow_invocable_v = is_default_predicate_v<BinaryPredicate> || std::is_nothrow_invocable_r_v<bool, BinaryPredicate, char_type, char_type>;
389
390
391
template <typename BinaryPredicate>
392
21.2k
constexpr bool cmp_equal(string_view lhs, string_view rhs, [[maybe_unused]] BinaryPredicate&& p) noexcept(is_nothrow_invocable_v<BinaryPredicate>) {
393
#if defined(_MSC_VER) && _MSC_VER < 1920 && !defined(__clang__)
394
  // https://developercommunity.visualstudio.com/content/problem/360432/vs20178-regression-c-failed-in-test.html
395
  // https://developercommunity.visualstudio.com/content/problem/232218/c-constexpr-string-view.html
396
  constexpr bool workaround = true;
397
#else
398
21.2k
  constexpr bool workaround = false;
399
21.2k
#endif
400
401
  if constexpr (!is_default_predicate_v<BinaryPredicate> || workaround) {
402
    if (lhs.size() != rhs.size()) {
403
      return false;
404
    }
405
406
    const auto size = lhs.size();
407
    for (std::size_t i = 0; i < size; ++i) {
408
      if (!p(lhs[i], rhs[i])) {
409
        return false;
410
      }
411
    }
412
413
    return true;
414
21.2k
  } else {
415
21.2k
    return lhs == rhs;
416
21.2k
  }
417
21.2k
}
418
419
template <typename L, typename R>
420
0
constexpr bool cmp_less(L lhs, R rhs) noexcept {
421
0
  static_assert(std::is_integral_v<L> && std::is_integral_v<R>, "magic_enum::detail::cmp_less requires integral type.");
422
0
423
0
  if constexpr (std::is_signed_v<L> == std::is_signed_v<R>) {
424
0
    // If same signedness (both signed or both unsigned).
425
0
    return lhs < rhs;
426
0
  } else if constexpr (std::is_same_v<L, bool>) { // bool special case
427
0
      return static_cast<R>(lhs) < rhs;
428
0
  } else if constexpr (std::is_same_v<R, bool>) { // bool special case
429
0
      return lhs < static_cast<L>(rhs);
430
0
  } else if constexpr (std::is_signed_v<R>) {
431
0
    // If 'right' is negative, then result is 'false', otherwise cast & compare.
432
0
    return rhs > 0 && lhs < static_cast<std::make_unsigned_t<R>>(rhs);
433
0
  } else {
434
0
    // If 'left' is negative, then result is 'true', otherwise cast & compare.
435
0
    return lhs < 0 || static_cast<std::make_unsigned_t<L>>(lhs) < rhs;
436
0
  }
437
0
}
438
439
template <typename I>
440
0
constexpr I log2(I value) noexcept {
441
0
  static_assert(std::is_integral_v<I>, "magic_enum::detail::log2 requires integral type.");
442
0
443
0
  if constexpr (std::is_same_v<I, bool>) { // bool special case
444
0
    return MAGIC_ENUM_ASSERT(false), value;
445
0
  } else {
446
0
    auto ret = I{0};
447
0
    for (; value > I{1}; value >>= I{1}, ++ret) {}
448
0
449
0
    return ret;
450
0
  }
451
0
}
452
453
#if defined(__cpp_lib_array_constexpr) && __cpp_lib_array_constexpr >= 201603L
454
#  define MAGIC_ENUM_ARRAY_CONSTEXPR 1
455
#else
456
template <typename T, std::size_t N, std::size_t... I>
457
constexpr std::array<std::remove_cv_t<T>, N> to_array(T (&a)[N], std::index_sequence<I...>) noexcept {
458
  return {{a[I]...}};
459
}
460
#endif
461
462
template <typename T>
463
inline constexpr bool is_enum_v = std::is_enum_v<T> && std::is_same_v<T, std::decay_t<T>>;
464
465
template <typename E>
466
constexpr auto MAGIC_ENUM_CALLING_CONVENTION n() noexcept {
467
  static_assert(is_enum_v<E>, "magic_enum::detail::n requires enum type.");
468
469
  if constexpr (supported<E>::value) {
470
#if defined(MAGIC_ENUM_GET_TYPE_NAME_BUILTIN)
471
    constexpr auto name_ptr = MAGIC_ENUM_GET_TYPE_NAME_BUILTIN(E);
472
    constexpr auto name = name_ptr ? str_view{name_ptr, std::char_traits<char>::length(name_ptr)} : str_view{};
473
#elif defined(__clang__)
474
    str_view name;
475
    if constexpr (sizeof(__PRETTY_FUNCTION__) == sizeof(__FUNCTION__)) {
476
      static_assert(always_false_v<E>, "magic_enum::detail::n requires __PRETTY_FUNCTION__.");
477
      return str_view{};
478
    } else {
479
      name.size_ = sizeof(__PRETTY_FUNCTION__) - 36;
480
      name.str_ = __PRETTY_FUNCTION__ + 34;
481
    }
482
#elif defined(__GNUC__)
483
    auto name = str_view{__PRETTY_FUNCTION__, sizeof(__PRETTY_FUNCTION__) - 1};
484
    if constexpr (sizeof(__PRETTY_FUNCTION__) == sizeof(__FUNCTION__)) {
485
      static_assert(always_false_v<E>, "magic_enum::detail::n requires __PRETTY_FUNCTION__.");
486
      return str_view{};
487
    } else if (name.str_[name.size_ - 1] == ']') {
488
      name.size_ -= 50;
489
      name.str_ += 49;
490
    } else {
491
      name.size_ -= 40;
492
      name.str_ += 37;
493
    }
494
#elif defined(_MSC_VER)
495
    // CLI/C++ workaround (see https://github.com/Neargye/magic_enum/issues/284).
496
    str_view name;
497
    name.str_ = __FUNCSIG__;
498
    name.str_ += 40;
499
    name.size_ += sizeof(__FUNCSIG__) - 57;
500
#else
501
    auto name = str_view{};
502
#endif
503
    std::size_t p = 0;
504
    for (std::size_t i = name.size_; i > 0; --i) {
505
      if (name.str_[i] == ':') {
506
        p = i + 1;
507
        break;
508
      }
509
    }
510
    if (p > 0) {
511
      name.size_ -= p;
512
      name.str_ += p;
513
    }
514
    return name;
515
  } else {
516
    return str_view{}; // Unsupported compiler or Invalid customize.
517
  }
518
}
519
520
template <typename E>
521
constexpr auto type_name() noexcept {
522
  [[maybe_unused]] constexpr auto custom = customize::enum_type_name<E>();
523
  static_assert(std::is_same_v<std::decay_t<decltype(custom)>, customize::customize_t>, "magic_enum::customize requires customize_t type.");
524
  if constexpr (custom.first == customize::detail::customize_tag::custom_tag) {
525
    constexpr auto name = custom.second;
526
    static_assert(!name.empty(), "magic_enum::customize requires not empty string.");
527
    return static_str<name.size()>{name};
528
  } else if constexpr (custom.first == customize::detail::customize_tag::invalid_tag) {
529
    return static_str<0>{};
530
  } else if constexpr (custom.first == customize::detail::customize_tag::default_tag) {
531
    constexpr auto name = n<E>();
532
    return static_str<name.size_>{name};
533
  } else {
534
    static_assert(always_false_v<E>, "magic_enum::customize invalid.");
535
  }
536
}
537
538
template <typename E>
539
inline constexpr auto type_name_v = type_name<E>();
540
541
template <auto V>
542
0
constexpr auto MAGIC_ENUM_CALLING_CONVENTION n() noexcept {
543
0
  static_assert(is_enum_v<decltype(V)>, "magic_enum::detail::n requires enum type.");
544
0
545
0
  if constexpr (supported<decltype(V)>::value) {
546
0
#if defined(MAGIC_ENUM_GET_ENUM_NAME_BUILTIN)
547
0
    constexpr auto name_ptr = MAGIC_ENUM_GET_ENUM_NAME_BUILTIN(V);
548
0
    auto name = name_ptr ? str_view{name_ptr, std::char_traits<char>::length(name_ptr)} : str_view{};
549
0
#elif defined(__clang__)
550
0
    str_view name;
551
0
    if constexpr (sizeof(__PRETTY_FUNCTION__) == sizeof(__FUNCTION__)) {
552
0
      static_assert(always_false_v<decltype(V)>, "magic_enum::detail::n requires __PRETTY_FUNCTION__.");
553
0
      return str_view{};
554
0
    } else {
555
0
      name.size_ = sizeof(__PRETTY_FUNCTION__) - 36;
556
0
      name.str_ = __PRETTY_FUNCTION__ + 34;
557
0
    }
558
0
    if (name.size_ > 22 && name.str_[0] == '(' && name.str_[1] == 'a' && name.str_[10] == ' ' && name.str_[22] == ':') {
559
0
      name.size_ -= 23;
560
0
      name.str_ += 23;
561
0
    }
562
0
    if (name.str_[0] == '(' || name.str_[0] == '-' || (name.str_[0] >= '0' && name.str_[0] <= '9')) {
563
0
      name = str_view{};
564
0
    }
565
0
#elif defined(__GNUC__)
566
0
    auto name = str_view{__PRETTY_FUNCTION__, sizeof(__PRETTY_FUNCTION__) - 1};
567
0
    if constexpr (sizeof(__PRETTY_FUNCTION__) == sizeof(__FUNCTION__)) {
568
0
      static_assert(always_false_v<decltype(V)>, "magic_enum::detail::n requires __PRETTY_FUNCTION__.");
569
0
      return str_view{};
570
0
    } else if (name.str_[name.size_ - 1] == ']') {
571
0
      name.size_ -= 55;
572
0
      name.str_ += 54;
573
0
    } else {
574
0
      name.size_ -= 40;
575
0
      name.str_ += 37;
576
0
    }
577
0
    if (name.str_[0] == '(') {
578
0
      name = str_view{};
579
0
    }
580
0
#elif defined(_MSC_VER)
581
0
    str_view name;
582
0
    if ((__FUNCSIG__[5] == '_' && __FUNCSIG__[35] != '(') || (__FUNCSIG__[5] == 'c' && __FUNCSIG__[41] != '(')) {
583
0
      // CLI/C++ workaround (see https://github.com/Neargye/magic_enum/issues/284).
584
0
      name.str_ = __FUNCSIG__;
585
0
      name.str_ += 35;
586
0
      name.size_ = sizeof(__FUNCSIG__) - 52;
587
0
    }
588
0
#else
589
0
    auto name = str_view{};
590
0
#endif
591
0
    std::size_t p = 0;
592
0
    for (std::size_t i = name.size_; i > 0; --i) {
593
0
      if (name.str_[i] == ':') {
594
0
        p = i + 1;
595
0
        break;
596
0
      }
597
0
    }
598
0
    if (p > 0) {
599
0
      name.size_ -= p;
600
0
      name.str_ += p;
601
0
    }
602
0
    return name;
603
0
  } else {
604
0
    return str_view{}; // Unsupported compiler or Invalid customize.
605
0
  }
606
0
}
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnumn128EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnumn127EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnumn126EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnumn125EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnumn124EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnumn123EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnumn122EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnumn121EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnumn120EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnumn119EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnumn118EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnumn117EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnumn116EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnumn115EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnumn114EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnumn113EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnumn112EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnumn111EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnumn110EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnumn109EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnumn108EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnumn107EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnumn106EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnumn105EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnumn104EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnumn103EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnumn102EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnumn101EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnumn100EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnumn99EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnumn98EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnumn97EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnumn96EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnumn95EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnumn94EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnumn93EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnumn92EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnumn91EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnumn90EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnumn89EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnumn88EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnumn87EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnumn86EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnumn85EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnumn84EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnumn83EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnumn82EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnumn81EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnumn80EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnumn79EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnumn78EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnumn77EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnumn76EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnumn75EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnumn74EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnumn73EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnumn72EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnumn71EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnumn70EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnumn69EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnumn68EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnumn67EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnumn66EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnumn65EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnumn64EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnumn63EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnumn62EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnumn61EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnumn60EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnumn59EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnumn58EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnumn57EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnumn56EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnumn55EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnumn54EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnumn53EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnumn52EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnumn51EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnumn50EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnumn49EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnumn48EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnumn47EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnumn46EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnumn45EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnumn44EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnumn43EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnumn42EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnumn41EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnumn40EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnumn39EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnumn38EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnumn37EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnumn36EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnumn35EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnumn34EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnumn33EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnumn32EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnumn31EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnumn30EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnumn29EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnumn28EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnumn27EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnumn26EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnumn25EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnumn24EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnumn23EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnumn22EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnumn21EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnumn20EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnumn19EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnumn18EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnumn17EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnumn16EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnumn15EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnumn14EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnumn13EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnumn12EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnumn11EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnumn10EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnumn9EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnumn8EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnumn7EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnumn6EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnumn5EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnumn4EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnumn3EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnumn2EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnumn1EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnum0EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnum1EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnum2EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnum3EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnum4EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnum5EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnum6EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnum7EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnum8EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnum9EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnum10EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnum11EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnum12EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnum13EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnum14EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnum15EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnum16EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnum17EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnum18EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnum19EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnum20EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnum21EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnum22EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnum23EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnum24EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnum25EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnum26EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnum27EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnum28EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnum29EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnum30EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnum31EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnum32EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnum33EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnum34EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnum35EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnum36EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnum37EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnum38EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnum39EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnum40EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnum41EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnum42EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnum43EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnum44EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnum45EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnum46EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnum47EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnum48EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnum49EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnum50EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnum51EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnum52EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnum53EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnum54EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnum55EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnum56EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnum57EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnum58EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnum59EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnum60EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnum61EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnum62EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnum63EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnum64EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnum65EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnum66EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnum67EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnum68EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnum69EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnum70EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnum71EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnum72EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnum73EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnum74EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnum75EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnum76EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnum77EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnum78EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnum79EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnum80EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnum81EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnum82EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnum83EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnum84EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnum85EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnum86EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnum87EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnum88EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnum89EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnum90EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnum91EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnum92EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnum93EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnum94EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnum95EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnum96EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnum97EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnum98EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnum99EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnum100EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnum101EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnum102EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnum103EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnum104EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnum105EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnum106EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnum107EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnum108EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnum109EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnum110EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnum111EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnum112EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnum113EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnum114EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnum115EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnum116EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnum117EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnum118EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnum119EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnum120EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnum121EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnum122EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnum123EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnum124EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnum125EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnum126EEEDav
Unexecuted instantiation: _ZN10magic_enum6detail1nITnDaLZ22LLVMFuzzerTestOneInputE8FuzzEnum127EEEDav
607
608
#if defined(_MSC_VER) && !defined(__clang__) && _MSC_VER < 1920
609
#  define MAGIC_ENUM_VS_2017_WORKAROUND 1
610
#endif
611
612
#if defined(MAGIC_ENUM_VS_2017_WORKAROUND)
613
template <typename E, E V>
614
constexpr auto MAGIC_ENUM_CALLING_CONVENTION n() noexcept {
615
  static_assert(is_enum_v<E>, "magic_enum::detail::n requires enum type.");
616
617
#  if defined(MAGIC_ENUM_GET_ENUM_NAME_BUILTIN)
618
  constexpr auto name_ptr = MAGIC_ENUM_GET_ENUM_NAME_BUILTIN(V);
619
  auto name = name_ptr ? str_view{name_ptr, std::char_traits<char>::length(name_ptr)} : str_view{};
620
#  else
621
  // CLI/C++ workaround (see https://github.com/Neargye/magic_enum/issues/284).
622
  str_view name;
623
  name.str_ = __FUNCSIG__;
624
  name.size_ = sizeof(__FUNCSIG__) - 17;
625
  std::size_t p = 0;
626
  for (std::size_t i = name.size_; i > 0; --i) {
627
    if (name.str_[i] == ',' || name.str_[i] == ':') {
628
      p = i + 1;
629
      break;
630
    }
631
  }
632
  if (p > 0) {
633
    name.size_ -= p;
634
    name.str_ += p;
635
  }
636
  if (name.str_[0] == '(' || name.str_[0] == '-' || (name.str_[0] >= '0' && name.str_[0] <= '9')) {
637
    name = str_view{};
638
  }
639
  return name;
640
#  endif
641
}
642
#endif
643
644
template <typename E, E V>
645
0
constexpr auto enum_name() noexcept {
646
0
  [[maybe_unused]] constexpr auto custom = customize::enum_name<E>(V);
647
0
  static_assert(std::is_same_v<std::decay_t<decltype(custom)>, customize::customize_t>, "magic_enum::customize requires customize_t type.");
648
0
  if constexpr (custom.first == customize::detail::customize_tag::custom_tag) {
649
0
    constexpr auto name = custom.second;
650
0
    static_assert(!name.empty(), "magic_enum::customize requires not empty string.");
651
0
    return static_str<name.size()>{name};
652
0
  } else if constexpr (custom.first == customize::detail::customize_tag::invalid_tag) {
653
0
    return static_str<0>{};
654
0
  } else if constexpr (custom.first == customize::detail::customize_tag::default_tag) {
655
0
#if defined(MAGIC_ENUM_VS_2017_WORKAROUND)
656
0
    constexpr auto name = n<E, V>();
657
0
#else
658
0
    constexpr auto name = n<V>();
659
0
#endif
660
0
    return static_str<name.size_ - prefix_length_or_zero<E>>{name.str_ + prefix_length_or_zero<E>};
661
0
  } else {
662
0
    static_assert(always_false_v<E>, "magic_enum::customize invalid.");
663
0
  }
664
0
}
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail9enum_nameIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnT_LS2_n5EEEDav
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail9enum_nameIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnT_LS2_0EEEDav
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail9enum_nameIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnT_LS2_10EEEDav
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail9enum_nameIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnT_LS2_11EEEDav
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail9enum_nameIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnT_LS2_12EEEDav
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail9enum_nameIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnT_LS2_13EEEDav
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail9enum_nameIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnT_LS2_14EEEDav
665
666
template <typename E, E V>
667
inline constexpr auto enum_name_v = enum_name<E, V>();
668
669
// CWG1766: Values outside the range of the values of an enumeration
670
// https://reviews.llvm.org/D130058, https://reviews.llvm.org/D131307
671
#if defined(__clang__) && __clang_major__ >= 16
672
template <typename E, auto V, typename = void>
673
inline constexpr bool is_enum_constexpr_static_cast_valid = false;
674
template <typename E, auto V>
675
inline constexpr bool is_enum_constexpr_static_cast_valid<E, V, std::void_t<std::integral_constant<E, static_cast<E>(V)>>> = true;
676
#else
677
template <typename, auto>
678
inline constexpr bool is_enum_constexpr_static_cast_valid = true;
679
#endif
680
681
template <typename E, auto V>
682
0
constexpr bool is_valid() noexcept {
683
0
  if constexpr (is_enum_constexpr_static_cast_valid<E, V>) {
684
0
    constexpr E v = static_cast<E>(V);
685
0
    [[maybe_unused]] constexpr auto custom = customize::enum_name<E>(v);
686
0
    static_assert(std::is_same_v<std::decay_t<decltype(custom)>, customize::customize_t>, "magic_enum::customize requires customize_t type.");
687
0
    if constexpr (custom.first == customize::detail::customize_tag::custom_tag) {
688
0
      constexpr auto name = custom.second;
689
0
      static_assert(!name.empty(), "magic_enum::customize requires not empty string.");
690
0
      return name.size() != 0;
691
0
    } else if constexpr (custom.first == customize::detail::customize_tag::default_tag) {
692
0
#if defined(MAGIC_ENUM_VS_2017_WORKAROUND)
693
0
      return n<E, v>().size_ != 0;
694
0
#else
695
0
      return n<v>().size_ != 0;
696
0
#endif
697
0
    } else {
698
0
      return false;
699
0
    }
700
0
  } else {
701
0
    return false;
702
0
  }
703
0
}
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLin128EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLin127EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLin126EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLin125EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLin124EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLin123EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLin122EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLin121EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLin120EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLin119EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLin118EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLin117EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLin116EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLin115EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLin114EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLin113EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLin112EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLin111EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLin110EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLin109EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLin108EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLin107EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLin106EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLin105EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLin104EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLin103EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLin102EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLin101EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLin100EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLin99EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLin98EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLin97EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLin96EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLin95EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLin94EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLin93EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLin92EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLin91EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLin90EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLin89EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLin88EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLin87EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLin86EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLin85EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLin84EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLin83EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLin82EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLin81EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLin80EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLin79EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLin78EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLin77EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLin76EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLin75EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLin74EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLin73EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLin72EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLin71EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLin70EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLin69EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLin68EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLin67EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLin66EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLin65EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLin64EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLin63EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLin62EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLin61EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLin60EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLin59EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLin58EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLin57EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLin56EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLin55EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLin54EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLin53EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLin52EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLin51EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLin50EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLin49EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLin48EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLin47EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLin46EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLin45EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLin44EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLin43EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLin42EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLin41EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLin40EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLin39EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLin38EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLin37EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLin36EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLin35EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLin34EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLin33EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLin32EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLin31EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLin30EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLin29EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLin28EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLin27EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLin26EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLin25EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLin24EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLin23EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLin22EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLin21EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLin20EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLin19EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLin18EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLin17EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLin16EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLin15EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLin14EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLin13EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLin12EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLin11EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLin10EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLin9EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLin8EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLin7EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLin6EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLin5EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLin4EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLin3EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLin2EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLin1EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLi0EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLi1EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLi2EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLi3EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLi4EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLi5EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLi6EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLi7EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLi8EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLi9EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLi10EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLi11EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLi12EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLi13EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLi14EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLi15EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLi16EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLi17EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLi18EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLi19EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLi20EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLi21EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLi22EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLi23EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLi24EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLi25EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLi26EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLi27EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLi28EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLi29EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLi30EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLi31EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLi32EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLi33EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLi34EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLi35EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLi36EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLi37EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLi38EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLi39EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLi40EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLi41EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLi42EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLi43EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLi44EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLi45EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLi46EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLi47EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLi48EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLi49EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLi50EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLi51EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLi52EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLi53EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLi54EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLi55EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLi56EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLi57EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLi58EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLi59EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLi60EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLi61EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLi62EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLi63EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLi64EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLi65EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLi66EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLi67EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLi68EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLi69EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLi70EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLi71EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLi72EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLi73EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLi74EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLi75EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLi76EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLi77EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLi78EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLi79EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLi80EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLi81EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLi82EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLi83EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLi84EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLi85EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLi86EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLi87EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLi88EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLi89EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLi90EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLi91EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLi92EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLi93EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLi94EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLi95EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLi96EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLi97EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLi98EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLi99EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLi100EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLi101EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLi102EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLi103EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLi104EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLi105EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLi106EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLi107EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLi108EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLi109EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLi110EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLi111EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLi112EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLi113EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLi114EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLi115EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLi116EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLi117EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLi118EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLi119EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLi120EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLi121EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLi122EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLi123EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLi124EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLi125EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLi126EEEbv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum6detail8is_validIZ22LLVMFuzzerTestOneInputE8FuzzEnumTnDaLi127EEEbv
704
705
enum class enum_subtype {
706
  common,
707
  flags
708
};
709
710
template <typename E, int O, enum_subtype S, typename U = std::underlying_type_t<E>>
711
0
constexpr U ualue(std::size_t i) noexcept {
712
0
  if constexpr (std::is_same_v<U, bool>) { // bool special case
713
0
    static_assert(O == 0, "magic_enum::detail::ualue requires valid offset.");
714
0
715
0
    return static_cast<U>(i);
716
0
  } else if constexpr (S == enum_subtype::flags) {
717
0
    return static_cast<U>(U{1} << static_cast<U>(static_cast<int>(i) + O));
718
0
  } else {
719
0
    return static_cast<U>(static_cast<int>(i) + O);
720
0
  }
721
0
}
722
723
template <typename E, int O, enum_subtype S, typename U = std::underlying_type_t<E>>
724
0
constexpr E value(std::size_t i) noexcept {
725
0
  return static_cast<E>(ualue<E, O, S>(i));
726
0
}
727
728
template <typename E, enum_subtype S, typename U = std::underlying_type_t<E>>
729
0
constexpr int reflected_min() noexcept {
730
0
  if constexpr (S == enum_subtype::flags) {
731
0
    return 0;
732
0
  } else {
733
0
    constexpr auto lhs = range_min<E>::value;
734
0
    constexpr auto rhs = (std::numeric_limits<U>::min)();
735
0
736
0
    if constexpr (cmp_less(rhs, lhs)) {
737
0
      return lhs;
738
0
    } else {
739
0
      return rhs;
740
0
    }
741
0
  }
742
0
}
743
744
template <typename E, enum_subtype S, typename U = std::underlying_type_t<E>>
745
0
constexpr int reflected_max() noexcept {
746
0
  if constexpr (S == enum_subtype::flags) {
747
0
    return std::numeric_limits<U>::digits - 1;
748
0
  } else {
749
0
    constexpr auto lhs = range_max<E>::value;
750
0
    constexpr auto rhs = (std::numeric_limits<U>::max)();
751
0
752
0
    if constexpr (cmp_less(lhs, rhs)) {
753
0
      return lhs;
754
0
    } else {
755
0
      return rhs;
756
0
    }
757
0
  }
758
0
}
759
760
#define MAGIC_ENUM_FOR_EACH_256(T)                                                                                                                                                                 \
761
  T(  0)T(  1)T(  2)T(  3)T(  4)T(  5)T(  6)T(  7)T(  8)T(  9)T( 10)T( 11)T( 12)T( 13)T( 14)T( 15)T( 16)T( 17)T( 18)T( 19)T( 20)T( 21)T( 22)T( 23)T( 24)T( 25)T( 26)T( 27)T( 28)T( 29)T( 30)T( 31) \
762
  T( 32)T( 33)T( 34)T( 35)T( 36)T( 37)T( 38)T( 39)T( 40)T( 41)T( 42)T( 43)T( 44)T( 45)T( 46)T( 47)T( 48)T( 49)T( 50)T( 51)T( 52)T( 53)T( 54)T( 55)T( 56)T( 57)T( 58)T( 59)T( 60)T( 61)T( 62)T( 63) \
763
  T( 64)T( 65)T( 66)T( 67)T( 68)T( 69)T( 70)T( 71)T( 72)T( 73)T( 74)T( 75)T( 76)T( 77)T( 78)T( 79)T( 80)T( 81)T( 82)T( 83)T( 84)T( 85)T( 86)T( 87)T( 88)T( 89)T( 90)T( 91)T( 92)T( 93)T( 94)T( 95) \
764
  T( 96)T( 97)T( 98)T( 99)T(100)T(101)T(102)T(103)T(104)T(105)T(106)T(107)T(108)T(109)T(110)T(111)T(112)T(113)T(114)T(115)T(116)T(117)T(118)T(119)T(120)T(121)T(122)T(123)T(124)T(125)T(126)T(127) \
765
  T(128)T(129)T(130)T(131)T(132)T(133)T(134)T(135)T(136)T(137)T(138)T(139)T(140)T(141)T(142)T(143)T(144)T(145)T(146)T(147)T(148)T(149)T(150)T(151)T(152)T(153)T(154)T(155)T(156)T(157)T(158)T(159) \
766
  T(160)T(161)T(162)T(163)T(164)T(165)T(166)T(167)T(168)T(169)T(170)T(171)T(172)T(173)T(174)T(175)T(176)T(177)T(178)T(179)T(180)T(181)T(182)T(183)T(184)T(185)T(186)T(187)T(188)T(189)T(190)T(191) \
767
  T(192)T(193)T(194)T(195)T(196)T(197)T(198)T(199)T(200)T(201)T(202)T(203)T(204)T(205)T(206)T(207)T(208)T(209)T(210)T(211)T(212)T(213)T(214)T(215)T(216)T(217)T(218)T(219)T(220)T(221)T(222)T(223) \
768
  T(224)T(225)T(226)T(227)T(228)T(229)T(230)T(231)T(232)T(233)T(234)T(235)T(236)T(237)T(238)T(239)T(240)T(241)T(242)T(243)T(244)T(245)T(246)T(247)T(248)T(249)T(250)T(251)T(252)T(253)T(254)T(255)
769
770
template <typename E, enum_subtype S, std::size_t Size, int Min, std::size_t I>
771
0
constexpr void valid_count(bool* valid, std::size_t& count) noexcept {
772
0
#define MAGIC_ENUM_V(O)                                     \
773
0
  if constexpr ((I + O) < Size) {                           \
774
0
    if constexpr (is_valid<E, ualue<E, Min, S>(I + O)>()) { \
775
0
      valid[I + O] = true;                                  \
776
0
      ++count;                                              \
777
0
    }                                                       \
778
0
  }
779
0
780
0
  MAGIC_ENUM_FOR_EACH_256(MAGIC_ENUM_V)
781
0
782
0
  if constexpr ((I + 256) < Size) {
783
0
    valid_count<E, S, Size, Min, I + 256>(valid, count);
784
0
  }
785
0
#undef MAGIC_ENUM_V
786
0
}
787
788
template <std::size_t N>
789
struct valid_count_t {
790
  std::size_t count = 0;
791
  bool valid[N] = {};
792
};
793
794
template <typename E, enum_subtype S, std::size_t Size, int Min>
795
0
constexpr auto valid_count() noexcept {
796
0
  valid_count_t<Size> vc;
797
0
  valid_count<E, S, Size, Min, 0>(vc.valid, vc.count);
798
0
  return vc;
799
0
}
800
801
template <typename E, enum_subtype S, std::size_t Size, int Min>
802
0
constexpr auto values() noexcept {
803
0
  constexpr auto vc = valid_count<E, S, Size, Min>();
804
0
805
0
  if constexpr (vc.count > 0) {
806
0
#if defined(MAGIC_ENUM_ARRAY_CONSTEXPR)
807
0
    std::array<E, vc.count> values = {};
808
0
#else
809
0
    E values[vc.count] = {};
810
0
#endif
811
0
    for (std::size_t i = 0, v = 0; v < vc.count; ++i) {
812
0
      if (vc.valid[i]) {
813
0
        values[v++] = value<E, Min, S>(i);
814
0
      }
815
0
    }
816
0
#if defined(MAGIC_ENUM_ARRAY_CONSTEXPR)
817
0
    return values;
818
0
#else
819
0
    return to_array(values, std::make_index_sequence<vc.count>{});
820
0
#endif
821
0
  } else {
822
0
    return std::array<E, 0>{};
823
0
  }
824
0
}
825
826
template <typename E, enum_subtype S, typename U = std::underlying_type_t<E>>
827
0
constexpr auto values() noexcept {
828
0
  constexpr auto min = reflected_min<E, S>();
829
0
  constexpr auto max = reflected_max<E, S>();
830
0
  constexpr auto range_size = max - min + 1;
831
0
  static_assert(range_size > 0, "magic_enum::enum_range requires valid size.");
832
0
833
0
  return values<E, S, range_size, min>();
834
0
}
835
836
template <typename E, typename U = std::underlying_type_t<E>>
837
0
constexpr enum_subtype subtype(std::true_type) noexcept {
838
0
  if constexpr (std::is_same_v<U, bool>) { // bool special case
839
0
    return enum_subtype::common;
840
0
  } else if constexpr (has_is_flags<E>::value) {
841
0
    return customize::enum_range<E>::is_flags ? enum_subtype::flags : enum_subtype::common;
842
0
  } else {
843
0
    return enum_subtype::common;
844
0
  }
845
0
}
846
847
template <typename T>
848
constexpr enum_subtype subtype(std::false_type) noexcept {
849
  // For non-enum type return default common subtype.
850
  return enum_subtype::common;
851
}
852
853
template <typename E, typename D = std::decay_t<E>>
854
inline constexpr auto subtype_v = subtype<D>(std::is_enum<D>{});
855
856
template <typename E, enum_subtype S>
857
inline constexpr auto values_v = values<E, S>();
858
859
template <typename E, enum_subtype S, typename D = std::decay_t<E>>
860
using values_t = decltype((values_v<D, S>));
861
862
template <typename E, enum_subtype S>
863
inline constexpr auto count_v = values_v<E, S>.size();
864
865
template <typename E, enum_subtype S, typename U = std::underlying_type_t<E>>
866
inline constexpr auto min_v = (count_v<E, S> > 0) ? static_cast<U>(values_v<E, S>.front()) : U{0};
867
868
template <typename E, enum_subtype S, typename U = std::underlying_type_t<E>>
869
inline constexpr auto max_v = (count_v<E, S> > 0) ? static_cast<U>(values_v<E, S>.back()) : U{0};
870
871
template <typename E, enum_subtype S, std::size_t... I>
872
0
constexpr auto names(std::index_sequence<I...>) noexcept {
873
0
  constexpr auto names = std::array<string_view, sizeof...(I)>{{enum_name_v<E, values_v<E, S>[I]>.str()...}};
874
0
  return names;
875
0
}
876
877
template <typename E, enum_subtype S>
878
inline constexpr auto names_v = names<E, S>(std::make_index_sequence<count_v<E, S>>{});
879
880
template <typename E, enum_subtype S, typename D = std::decay_t<E>>
881
using names_t = decltype((names_v<D, S>));
882
883
template <typename E, enum_subtype S, std::size_t... I>
884
0
constexpr auto entries(std::index_sequence<I...>) noexcept {
885
0
  constexpr auto entries = std::array<std::pair<E, string_view>, sizeof...(I)>{{{values_v<E, S>[I], enum_name_v<E, values_v<E, S>[I]>.str()}...}};
886
0
  return entries;
887
0
}
888
889
template <typename E, enum_subtype S>
890
inline constexpr auto entries_v = entries<E, S>(std::make_index_sequence<count_v<E, S>>{});
891
892
template <typename E, enum_subtype S, typename D = std::decay_t<E>>
893
using entries_t = decltype((entries_v<D, S>));
894
895
template <typename E, enum_subtype S, typename U = std::underlying_type_t<E>>
896
0
constexpr bool is_sparse() noexcept {
897
0
  if constexpr (count_v<E, S> == 0) {
898
0
    return false;
899
0
  } else if constexpr (std::is_same_v<U, bool>) { // bool special case
900
0
    return false;
901
0
  } else {
902
0
    constexpr auto max = (S == enum_subtype::flags) ? log2(max_v<E, S>) : max_v<E, S>;
903
0
    constexpr auto min = (S == enum_subtype::flags) ? log2(min_v<E, S>) : min_v<E, S>;
904
0
    constexpr auto range_size = max - min + 1;
905
0
906
0
    return range_size != count_v<E, S>;
907
0
  }
908
0
}
909
910
template <typename E, enum_subtype S = subtype_v<E>>
911
inline constexpr bool is_sparse_v = is_sparse<E, S>();
912
913
template <typename E, enum_subtype S>
914
struct is_reflected
915
#if defined(MAGIC_ENUM_NO_CHECK_REFLECTED_ENUM)
916
  : std::true_type {};
917
#else
918
  : std::bool_constant<std::is_enum_v<E> && (count_v<E, S> != 0)> {};
919
#endif
920
921
template <typename E, enum_subtype S>
922
inline constexpr bool is_reflected_v = is_reflected<std::decay_t<E>, S>{};
923
924
template <bool, typename R>
925
struct enable_if_enum {};
926
927
template <typename R>
928
struct enable_if_enum<true, R> {
929
  using type = R;
930
  static_assert(supported<R>::value, "magic_enum unsupported compiler (https://github.com/Neargye/magic_enum#compiler-compatibility).");
931
};
932
933
template <typename T, typename R, typename BinaryPredicate = std::equal_to<>, typename D = std::decay_t<T>>
934
using enable_if_t = typename enable_if_enum<std::is_enum_v<D> && std::is_invocable_r_v<bool, BinaryPredicate, char_type, char_type>, R>::type;
935
936
template <typename T, std::enable_if_t<std::is_enum_v<std::decay_t<T>>, int> = 0>
937
using enum_concept = T;
938
939
template <typename T, bool = std::is_enum_v<T>>
940
struct is_scoped_enum : std::false_type {};
941
942
template <typename T>
943
struct is_scoped_enum<T, true> : std::bool_constant<!std::is_convertible_v<T, std::underlying_type_t<T>>> {};
944
945
template <typename T, bool = std::is_enum_v<T>>
946
struct is_unscoped_enum : std::false_type {};
947
948
template <typename T>
949
struct is_unscoped_enum<T, true> : std::bool_constant<std::is_convertible_v<T, std::underlying_type_t<T>>> {};
950
951
template <typename T, bool = std::is_enum_v<std::decay_t<T>>>
952
struct underlying_type {};
953
954
template <typename T>
955
struct underlying_type<T, true> : std::underlying_type<std::decay_t<T>> {};
956
957
#if defined(MAGIC_ENUM_ENABLE_HASH) || defined(MAGIC_ENUM_ENABLE_HASH_SWITCH)
958
959
template <typename Value, typename = void>
960
struct constexpr_hash_t;
961
962
template <typename Value>
963
struct constexpr_hash_t<Value, std::enable_if_t<is_enum_v<Value>>> {
964
  constexpr auto operator()(Value value) const noexcept {
965
    using U = typename underlying_type<Value>::type;
966
    if constexpr (std::is_same_v<U, bool>) { // bool special case
967
      return static_cast<std::size_t>(value);
968
    } else {
969
      return static_cast<U>(value);
970
    }
971
  }
972
  using secondary_hash = constexpr_hash_t;
973
};
974
975
template <typename Value>
976
struct constexpr_hash_t<Value, std::enable_if_t<std::is_same_v<Value, string_view>>> {
977
  static constexpr std::uint32_t crc_table[256] {
978
    0x00000000L, 0x77073096L, 0xee0e612cL, 0x990951baL, 0x076dc419L, 0x706af48fL, 0xe963a535L, 0x9e6495a3L,
979
    0x0edb8832L, 0x79dcb8a4L, 0xe0d5e91eL, 0x97d2d988L, 0x09b64c2bL, 0x7eb17cbdL, 0xe7b82d07L, 0x90bf1d91L,
980
    0x1db71064L, 0x6ab020f2L, 0xf3b97148L, 0x84be41deL, 0x1adad47dL, 0x6ddde4ebL, 0xf4d4b551L, 0x83d385c7L,
981
    0x136c9856L, 0x646ba8c0L, 0xfd62f97aL, 0x8a65c9ecL, 0x14015c4fL, 0x63066cd9L, 0xfa0f3d63L, 0x8d080df5L,
982
    0x3b6e20c8L, 0x4c69105eL, 0xd56041e4L, 0xa2677172L, 0x3c03e4d1L, 0x4b04d447L, 0xd20d85fdL, 0xa50ab56bL,
983
    0x35b5a8faL, 0x42b2986cL, 0xdbbbc9d6L, 0xacbcf940L, 0x32d86ce3L, 0x45df5c75L, 0xdcd60dcfL, 0xabd13d59L,
984
    0x26d930acL, 0x51de003aL, 0xc8d75180L, 0xbfd06116L, 0x21b4f4b5L, 0x56b3c423L, 0xcfba9599L, 0xb8bda50fL,
985
    0x2802b89eL, 0x5f058808L, 0xc60cd9b2L, 0xb10be924L, 0x2f6f7c87L, 0x58684c11L, 0xc1611dabL, 0xb6662d3dL,
986
    0x76dc4190L, 0x01db7106L, 0x98d220bcL, 0xefd5102aL, 0x71b18589L, 0x06b6b51fL, 0x9fbfe4a5L, 0xe8b8d433L,
987
    0x7807c9a2L, 0x0f00f934L, 0x9609a88eL, 0xe10e9818L, 0x7f6a0dbbL, 0x086d3d2dL, 0x91646c97L, 0xe6635c01L,
988
    0x6b6b51f4L, 0x1c6c6162L, 0x856530d8L, 0xf262004eL, 0x6c0695edL, 0x1b01a57bL, 0x8208f4c1L, 0xf50fc457L,
989
    0x65b0d9c6L, 0x12b7e950L, 0x8bbeb8eaL, 0xfcb9887cL, 0x62dd1ddfL, 0x15da2d49L, 0x8cd37cf3L, 0xfbd44c65L,
990
    0x4db26158L, 0x3ab551ceL, 0xa3bc0074L, 0xd4bb30e2L, 0x4adfa541L, 0x3dd895d7L, 0xa4d1c46dL, 0xd3d6f4fbL,
991
    0x4369e96aL, 0x346ed9fcL, 0xad678846L, 0xda60b8d0L, 0x44042d73L, 0x33031de5L, 0xaa0a4c5fL, 0xdd0d7cc9L,
992
    0x5005713cL, 0x270241aaL, 0xbe0b1010L, 0xc90c2086L, 0x5768b525L, 0x206f85b3L, 0xb966d409L, 0xce61e49fL,
993
    0x5edef90eL, 0x29d9c998L, 0xb0d09822L, 0xc7d7a8b4L, 0x59b33d17L, 0x2eb40d81L, 0xb7bd5c3bL, 0xc0ba6cadL,
994
    0xedb88320L, 0x9abfb3b6L, 0x03b6e20cL, 0x74b1d29aL, 0xead54739L, 0x9dd277afL, 0x04db2615L, 0x73dc1683L,
995
    0xe3630b12L, 0x94643b84L, 0x0d6d6a3eL, 0x7a6a5aa8L, 0xe40ecf0bL, 0x9309ff9dL, 0x0a00ae27L, 0x7d079eb1L,
996
    0xf00f9344L, 0x8708a3d2L, 0x1e01f268L, 0x6906c2feL, 0xf762575dL, 0x806567cbL, 0x196c3671L, 0x6e6b06e7L,
997
    0xfed41b76L, 0x89d32be0L, 0x10da7a5aL, 0x67dd4accL, 0xf9b9df6fL, 0x8ebeeff9L, 0x17b7be43L, 0x60b08ed5L,
998
    0xd6d6a3e8L, 0xa1d1937eL, 0x38d8c2c4L, 0x4fdff252L, 0xd1bb67f1L, 0xa6bc5767L, 0x3fb506ddL, 0x48b2364bL,
999
    0xd80d2bdaL, 0xaf0a1b4cL, 0x36034af6L, 0x41047a60L, 0xdf60efc3L, 0xa867df55L, 0x316e8eefL, 0x4669be79L,
1000
    0xcb61b38cL, 0xbc66831aL, 0x256fd2a0L, 0x5268e236L, 0xcc0c7795L, 0xbb0b4703L, 0x220216b9L, 0x5505262fL,
1001
    0xc5ba3bbeL, 0xb2bd0b28L, 0x2bb45a92L, 0x5cb36a04L, 0xc2d7ffa7L, 0xb5d0cf31L, 0x2cd99e8bL, 0x5bdeae1dL,
1002
    0x9b64c2b0L, 0xec63f226L, 0x756aa39cL, 0x026d930aL, 0x9c0906a9L, 0xeb0e363fL, 0x72076785L, 0x05005713L,
1003
    0x95bf4a82L, 0xe2b87a14L, 0x7bb12baeL, 0x0cb61b38L, 0x92d28e9bL, 0xe5d5be0dL, 0x7cdcefb7L, 0x0bdbdf21L,
1004
    0x86d3d2d4L, 0xf1d4e242L, 0x68ddb3f8L, 0x1fda836eL, 0x81be16cdL, 0xf6b9265bL, 0x6fb077e1L, 0x18b74777L,
1005
    0x88085ae6L, 0xff0f6a70L, 0x66063bcaL, 0x11010b5cL, 0x8f659effL, 0xf862ae69L, 0x616bffd3L, 0x166ccf45L,
1006
    0xa00ae278L, 0xd70dd2eeL, 0x4e048354L, 0x3903b3c2L, 0xa7672661L, 0xd06016f7L, 0x4969474dL, 0x3e6e77dbL,
1007
    0xaed16a4aL, 0xd9d65adcL, 0x40df0b66L, 0x37d83bf0L, 0xa9bcae53L, 0xdebb9ec5L, 0x47b2cf7fL, 0x30b5ffe9L,
1008
    0xbdbdf21cL, 0xcabac28aL, 0x53b39330L, 0x24b4a3a6L, 0xbad03605L, 0xcdd70693L, 0x54de5729L, 0x23d967bfL,
1009
    0xb3667a2eL, 0xc4614ab8L, 0x5d681b02L, 0x2a6f2b94L, 0xb40bbe37L, 0xc30c8ea1L, 0x5a05df1bL, 0x2d02ef8dL
1010
  };
1011
  constexpr std::uint32_t operator()(string_view value) const noexcept {
1012
    auto crc = static_cast<std::uint32_t>(0xffffffffL);
1013
    for (const auto c : value) {
1014
      crc = (crc >> 8) ^ crc_table[(crc ^ static_cast<std::uint32_t>(c)) & 0xff];
1015
    }
1016
    return crc ^ 0xffffffffL;
1017
  }
1018
1019
  struct secondary_hash {
1020
    constexpr std::uint32_t operator()(string_view value) const noexcept {
1021
      auto acc = static_cast<std::uint64_t>(2166136261ULL);
1022
      for (const auto c : value) {
1023
        acc = ((acc ^ static_cast<std::uint64_t>(c)) * static_cast<std::uint64_t>(16777619ULL)) & (std::numeric_limits<std::uint32_t>::max)();
1024
      }
1025
      return static_cast<std::uint32_t>(acc);
1026
    }
1027
  };
1028
};
1029
1030
template <typename Hash>
1031
inline constexpr Hash hash_v{};
1032
1033
template <auto* GlobValues, typename Hash>
1034
constexpr auto calculate_cases(std::size_t Page) noexcept {
1035
  constexpr std::array values = *GlobValues;
1036
  constexpr std::size_t size = values.size();
1037
1038
  using switch_t = std::invoke_result_t<Hash, typename decltype(values)::value_type>;
1039
  static_assert(std::is_integral_v<switch_t> && !std::is_same_v<switch_t, bool>);
1040
  const std::size_t values_to = (std::min)(static_cast<std::size_t>(256), size - Page);
1041
1042
  std::array<switch_t, 256> result{};
1043
  auto fill = result.begin();
1044
  {
1045
    auto first = values.begin() + static_cast<std::ptrdiff_t>(Page);
1046
    auto last = values.begin() + static_cast<std::ptrdiff_t>(Page + values_to);
1047
    while (first != last) {
1048
      *fill++ = hash_v<Hash>(*first++);
1049
    }
1050
  }
1051
1052
  // dead cases, try to avoid case collisions
1053
  for (switch_t last_value = result[values_to - 1]; fill != result.end() && last_value != (std::numeric_limits<switch_t>::max)(); *fill++ = ++last_value) {
1054
  }
1055
1056
  {
1057
    auto it = result.begin();
1058
    auto last_value = (std::numeric_limits<switch_t>::min)();
1059
    for (; fill != result.end(); *fill++ = last_value++) {
1060
      while (last_value == *it) {
1061
        ++last_value, ++it;
1062
      }
1063
    }
1064
  }
1065
1066
  return result;
1067
}
1068
1069
template <typename R, typename F, typename... Args>
1070
constexpr R invoke_r(F&& f, Args&&... args) noexcept(std::is_nothrow_invocable_r_v<R, F, Args...>) {
1071
  if constexpr (std::is_void_v<R>) {
1072
    std::forward<F>(f)(std::forward<Args>(args)...);
1073
  } else {
1074
    return static_cast<R>(std::forward<F>(f)(std::forward<Args>(args)...));
1075
  }
1076
}
1077
1078
enum class case_call_t {
1079
  index,
1080
  value
1081
};
1082
1083
template <typename T = void>
1084
inline constexpr auto default_result_type_lambda = []() noexcept(std::is_nothrow_default_constructible_v<T>) { return T{}; };
1085
1086
template <>
1087
inline constexpr auto default_result_type_lambda<void> = []() noexcept {};
1088
1089
template <auto* Arr, typename Hash>
1090
constexpr bool has_duplicate() noexcept {
1091
  using value_t = std::decay_t<decltype((*Arr)[0])>;
1092
  using hash_value_t = std::invoke_result_t<Hash, value_t>;
1093
  std::array<hash_value_t, Arr->size()> hashes{};
1094
  std::size_t size = 0;
1095
  for (auto elem : *Arr) {
1096
    hashes[size] = hash_v<Hash>(elem);
1097
    for (auto i = size++; i > 0; --i) {
1098
      if (hashes[i] < hashes[i - 1]) {
1099
        auto tmp = hashes[i];
1100
        hashes[i] = hashes[i - 1];
1101
        hashes[i - 1] = tmp;
1102
      } else if (hashes[i] == hashes[i - 1]) {
1103
        return false;
1104
      } else {
1105
        break;
1106
      }
1107
    }
1108
  }
1109
  return true;
1110
}
1111
1112
#define MAGIC_ENUM_CASE(val)                                                                                                  \
1113
  case cases[val]:                                                                                                            \
1114
    if constexpr ((val) + Page < size) {                                                                                      \
1115
      if (!pred(values[val + Page], searched)) {                                                                              \
1116
        break;                                                                                                                \
1117
      }                                                                                                                       \
1118
      if constexpr (CallValue == case_call_t::index) {                                                                        \
1119
        if constexpr (std::is_invocable_r_v<result_t, Lambda, std::integral_constant<std::size_t, val + Page>>) {             \
1120
          return detail::invoke_r<result_t>(std::forward<Lambda>(lambda), std::integral_constant<std::size_t, val + Page>{}); \
1121
        } else if constexpr (std::is_invocable_v<Lambda, std::integral_constant<std::size_t, val + Page>>) {                  \
1122
          MAGIC_ENUM_ASSERT(false && "magic_enum::detail::constexpr_switch wrong result type.");                                         \
1123
        }                                                                                                                     \
1124
      } else if constexpr (CallValue == case_call_t::value) {                                                                 \
1125
        if constexpr (std::is_invocable_r_v<result_t, Lambda, enum_constant<values[val + Page]>>) {                           \
1126
          return detail::invoke_r<result_t>(std::forward<Lambda>(lambda), enum_constant<values[val + Page]>{});               \
1127
        } else if constexpr (std::is_invocable_r_v<result_t, Lambda, enum_constant<values[val + Page]>>) {                    \
1128
          MAGIC_ENUM_ASSERT(false && "magic_enum::detail::constexpr_switch wrong result type.");                                         \
1129
        }                                                                                                                     \
1130
      }                                                                                                                       \
1131
      break;                                                                                                                  \
1132
    } else [[fallthrough]];
1133
1134
template <auto* GlobValues,
1135
          case_call_t CallValue,
1136
          std::size_t Page = 0,
1137
          typename Hash = constexpr_hash_t<typename std::decay_t<decltype(*GlobValues)>::value_type>,
1138
          typename BinaryPredicate = std::equal_to<>,
1139
          typename Lambda,
1140
          typename ResultGetterType>
1141
constexpr decltype(auto) constexpr_switch(
1142
    Lambda&& lambda,
1143
    typename std::decay_t<decltype(*GlobValues)>::value_type searched,
1144
    ResultGetterType&& def,
1145
    BinaryPredicate&& pred = {}) {
1146
  using result_t = std::invoke_result_t<ResultGetterType>;
1147
  using hash_t = std::conditional_t<has_duplicate<GlobValues, Hash>(), Hash, typename Hash::secondary_hash>;
1148
  static_assert(has_duplicate<GlobValues, hash_t>(), "magic_enum::detail::constexpr_switch duplicated hash found, please report it: https://github.com/Neargye/magic_enum/issues.");
1149
  constexpr std::array values = *GlobValues;
1150
  constexpr std::size_t size = values.size();
1151
  constexpr std::array cases = calculate_cases<GlobValues, hash_t>(Page);
1152
1153
  switch (hash_v<hash_t>(searched)) {
1154
    MAGIC_ENUM_FOR_EACH_256(MAGIC_ENUM_CASE)
1155
    default:
1156
      if constexpr (size > 256 + Page) {
1157
        return constexpr_switch<GlobValues, CallValue, Page + 256, Hash>(std::forward<Lambda>(lambda), searched, std::forward<ResultGetterType>(def));
1158
      }
1159
      break;
1160
  }
1161
  return def();
1162
}
1163
1164
#undef MAGIC_ENUM_CASE
1165
1166
#endif
1167
1168
} // namespace magic_enum::detail
1169
1170
// Checks is magic_enum supported compiler.
1171
inline constexpr bool is_magic_enum_supported = detail::supported<void>::value;
1172
1173
template <typename T>
1174
using Enum = detail::enum_concept<T>;
1175
1176
// Returns true if T is an Unscoped enumeration type.
1177
// Provides the member constant value which is equal to true, if T is an [Unscoped enumeration](https://en.cppreference.com/w/cpp/language/enum#Unscoped_enumeration) type. Otherwise, value is equal to false.
1178
template <typename T>
1179
struct is_unscoped_enum : detail::is_unscoped_enum<T> {};
1180
1181
template <typename T>
1182
inline constexpr bool is_unscoped_enum_v = is_unscoped_enum<T>::value;
1183
1184
// Returns true if T is a Scoped enumeration type.
1185
// Provides the member constant value which is equal to true, if T is an [Scoped enumeration](https://en.cppreference.com/w/cpp/language/enum#Scoped_enumerations) type. Otherwise, value is equal to false.
1186
template <typename T>
1187
struct is_scoped_enum : detail::is_scoped_enum<T> {};
1188
1189
template <typename T>
1190
inline constexpr bool is_scoped_enum_v = is_scoped_enum<T>::value;
1191
1192
// If T is a complete enumeration type, provides a member typedef type that names the underlying type of T.
1193
// Otherwise, if T is not an enumeration type, there is no member type. Otherwise (T is an incomplete enumeration type), the program is ill-formed.
1194
template <typename T>
1195
struct underlying_type : detail::underlying_type<T> {};
1196
1197
template <typename T>
1198
using underlying_type_t = typename underlying_type<T>::type;
1199
1200
template <auto V>
1201
using enum_constant = detail::enum_constant<V>;
1202
1203
// Returns type name of enum.
1204
template <typename E>
1205
[[nodiscard]] constexpr auto enum_type_name() noexcept -> detail::enable_if_t<E, string_view> {
1206
  constexpr string_view name = detail::type_name_v<std::decay_t<E>>.str();
1207
  static_assert(!name.empty(), "magic_enum::enum_type_name enum type does not have a name.");
1208
1209
  return name;
1210
}
1211
1212
// Returns number of enum values.
1213
template <typename E, detail::enum_subtype S = detail::subtype_v<E>>
1214
2.03k
[[nodiscard]] constexpr auto enum_count() noexcept -> detail::enable_if_t<E, std::size_t> {
1215
2.03k
  return detail::count_v<std::decay_t<E>, S>;
1216
2.03k
}
1217
1218
// Returns enum value at specified index.
1219
// No bounds checking is performed: the behavior is undefined if index >= number of enum values.
1220
template <typename E, detail::enum_subtype S = detail::subtype_v<E>>
1221
37.6k
[[nodiscard]] constexpr auto enum_value(std::size_t index) noexcept -> detail::enable_if_t<E, std::decay_t<E>> {
1222
37.6k
  using D = std::decay_t<E>;
1223
37.6k
  static_assert(detail::is_reflected_v<D, S>, "magic_enum requires enum implementation and valid max and min.");
1224
1225
37.6k
  if constexpr (detail::is_sparse_v<D, S>) {
1226
37.6k
    return MAGIC_ENUM_ASSERT(index < detail::count_v<D, S>), detail::values_v<D, S>[index];
1227
  } else {
1228
    constexpr auto min = (S == detail::enum_subtype::flags) ? detail::log2(detail::min_v<D, S>) : detail::min_v<D, S>;
1229
1230
    return MAGIC_ENUM_ASSERT(index < detail::count_v<D, S>), detail::value<D, min, S>(index);
1231
  }
1232
37.6k
}
1233
1234
// Returns enum value at specified index.
1235
template <typename E, std::size_t I, detail::enum_subtype S = detail::subtype_v<E>>
1236
[[nodiscard]] constexpr auto enum_value() noexcept -> detail::enable_if_t<E, std::decay_t<E>> {
1237
  using D = std::decay_t<E>;
1238
  static_assert(detail::is_reflected_v<D, S>, "magic_enum requires enum implementation and valid max and min.");
1239
  static_assert(I < detail::count_v<D, S>, "magic_enum::enum_value out of range.");
1240
1241
  return enum_value<D, S>(I);
1242
}
1243
1244
// Returns std::array with enum values, sorted by enum value.
1245
template <typename E, detail::enum_subtype S = detail::subtype_v<E>>
1246
0
[[nodiscard]] constexpr auto enum_values() noexcept -> detail::enable_if_t<E, detail::values_t<E, S>> {
1247
0
  using D = std::decay_t<E>;
1248
0
  static_assert(detail::is_reflected_v<D, S>, "magic_enum requires enum implementation and valid max and min.");
1249
0
1250
0
  return detail::values_v<D, S>;
1251
0
}
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum11enum_valuesIKZ22LLVMFuzzerTestOneInputE8FuzzEnumLNS_6detail12enum_subtypeE0EEENS3_14enable_if_enumIXaasr3stdE9is_enum_vIu7__decayIT_EEL_ZNSt3__116is_invocable_r_vIbNS8_8equal_toIvEEJccEEEEEDT8values_vIS7_XT0_EEEE4typeEv
Unexecuted instantiation: magic_enum_fuzzer.cc:_ZN10magic_enum11enum_valuesIZ22LLVMFuzzerTestOneInputE8FuzzEnumLNS_6detail12enum_subtypeE0EEENS2_14enable_if_enumIXaasr3stdE9is_enum_vIu7__decayIT_EEL_ZNSt3__116is_invocable_r_vIbNS7_8equal_toIvEEJccEEEEEDT8values_vIS6_XT0_EEEE4typeEv
1252
1253
// Returns integer value from enum value.
1254
template <typename E>
1255
[[nodiscard]] constexpr auto enum_integer(E value) noexcept -> underlying_type_t<E> {
1256
  return static_cast<underlying_type_t<E>>(value);
1257
}
1258
1259
// Returns underlying value from enum value.
1260
template <typename E>
1261
[[nodiscard]] constexpr auto enum_underlying(E value) noexcept -> underlying_type_t<E> {
1262
  return static_cast<underlying_type_t<E>>(value);
1263
}
1264
1265
// Returns index in enum values from enum value.
1266
// Returns optional with index.
1267
template <typename E, detail::enum_subtype S = detail::subtype_v<E>>
1268
8.12k
[[nodiscard]] constexpr auto enum_index(E value) noexcept -> detail::enable_if_t<E, optional<std::size_t>> {
1269
8.12k
  using D = std::decay_t<E>;
1270
8.12k
  using U = underlying_type_t<D>;
1271
8.12k
  static_assert(detail::is_reflected_v<D, S>, "magic_enum requires enum implementation and valid max and min.");
1272
1273
8.12k
  if constexpr (detail::is_sparse_v<D, S> || (S == detail::enum_subtype::flags)) {
1274
#if defined(MAGIC_ENUM_ENABLE_HASH)
1275
    return detail::constexpr_switch<&detail::values_v<D, S>, detail::case_call_t::index>(
1276
        [](std::size_t i) { return optional<std::size_t>{i}; },
1277
        value,
1278
        detail::default_result_type_lambda<optional<std::size_t>>);
1279
#else
1280
16.2k
    for (std::size_t i = 0; i < detail::count_v<D, S>; ++i) {
1281
16.2k
      if (enum_value<D, S>(i) == value) {
1282
8.12k
        return i;
1283
8.12k
      }
1284
16.2k
    }
1285
0
    return {}; // Invalid value or out of range.
1286
8.12k
#endif
1287
  } else {
1288
    const auto v = static_cast<U>(value);
1289
    if (v >= detail::min_v<D, S> && v <= detail::max_v<D, S>) {
1290
      return static_cast<std::size_t>(v - detail::min_v<D, S>);
1291
    }
1292
    return {}; // Invalid value or out of range.
1293
  }
1294
8.12k
}
1295
1296
// Returns index in enum values from enum value.
1297
// Returns optional with index.
1298
template <detail::enum_subtype S, typename E>
1299
[[nodiscard]] constexpr auto enum_index(E value) noexcept -> detail::enable_if_t<E, optional<std::size_t>> {
1300
  using D = std::decay_t<E>;
1301
  static_assert(detail::is_reflected_v<D, S>, "magic_enum requires enum implementation and valid max and min.");
1302
1303
  return enum_index<D, S>(value);
1304
}
1305
1306
// Returns index in enum values from static storage enum variable.
1307
template <auto V, detail::enum_subtype S = detail::subtype_v<std::decay_t<decltype(V)>>>
1308
[[nodiscard]] constexpr auto enum_index() noexcept -> detail::enable_if_t<decltype(V), std::size_t> {\
1309
  using D = std::decay_t<decltype(V)>;
1310
  static_assert(detail::is_reflected_v<D, S>, "magic_enum requires enum implementation and valid max and min.");
1311
  constexpr auto index = enum_index<D, S>(V);
1312
  static_assert(index, "magic_enum::enum_index enum value does not have a index.");
1313
1314
  return *index;
1315
}
1316
1317
// Returns name from static storage enum variable.
1318
// This version is much lighter on the compile times and is not restricted to the enum_range limitation.
1319
template <auto V>
1320
[[nodiscard]] constexpr auto enum_name() noexcept -> detail::enable_if_t<decltype(V), string_view> {
1321
  constexpr string_view name = detail::enum_name_v<std::decay_t<decltype(V)>, V>.str();
1322
  static_assert(!name.empty(), "magic_enum::enum_name enum value does not have a name.");
1323
1324
  return name;
1325
}
1326
1327
// Returns name from enum value.
1328
// If enum value does not have name or value out of range, returns empty string.
1329
template <typename E, detail::enum_subtype S = detail::subtype_v<E>>
1330
[[nodiscard]] constexpr auto enum_name(E value) noexcept -> detail::enable_if_t<E, string_view> {
1331
  using D = std::decay_t<E>;
1332
  static_assert(detail::is_reflected_v<D, S>, "magic_enum requires enum implementation and valid max and min.");
1333
1334
  if (const auto i = enum_index<D, S>(value)) {
1335
    return detail::names_v<D, S>[*i];
1336
  }
1337
  return detail::static_str<0>{}.str();
1338
}
1339
1340
// Returns name from enum value.
1341
// If enum value does not have name or value out of range, returns empty string.
1342
template <detail::enum_subtype S, typename E>
1343
[[nodiscard]] constexpr auto enum_name(E value) -> detail::enable_if_t<E, string_view> {
1344
  using D = std::decay_t<E>;
1345
  static_assert(detail::is_reflected_v<D, S>, "magic_enum requires enum implementation and valid max and min.");
1346
1347
  return enum_name<D, S>(value);
1348
}
1349
1350
// Returns std::array with names, sorted by enum value.
1351
template <typename E, detail::enum_subtype S = detail::subtype_v<E>>
1352
1.01k
[[nodiscard]] constexpr auto enum_names() noexcept -> detail::enable_if_t<E, detail::names_t<E, S>> {
1353
1.01k
  using D = std::decay_t<E>;
1354
1.01k
  static_assert(detail::is_reflected_v<D, S>, "magic_enum requires enum implementation and valid max and min.");
1355
1356
1.01k
  return detail::names_v<D, S>;
1357
1.01k
}
1358
1359
// Returns std::array with pairs (value, name), sorted by enum value.
1360
template <typename E, detail::enum_subtype S = detail::subtype_v<E>>
1361
1.01k
[[nodiscard]] constexpr auto enum_entries() noexcept -> detail::enable_if_t<E, detail::entries_t<E, S>> {
1362
1.01k
  using D = std::decay_t<E>;
1363
1.01k
  static_assert(detail::is_reflected_v<D, S>, "magic_enum requires enum implementation and valid max and min.");
1364
1365
1.01k
  return detail::entries_v<D, S>;
1366
1.01k
}
1367
1368
// Allows you to write magic_enum::enum_cast<foo>("bar", magic_enum::case_insensitive);
1369
inline constexpr auto case_insensitive = detail::case_insensitive<>{};
1370
1371
// Returns enum value from integer value.
1372
// Returns optional with enum value.
1373
template <typename E, detail::enum_subtype S = detail::subtype_v<E>>
1374
3.04k
[[nodiscard]] constexpr auto enum_cast(underlying_type_t<E> value) noexcept -> detail::enable_if_t<E, optional<std::decay_t<E>>> {
1375
3.04k
  using D = std::decay_t<E>;
1376
3.04k
  static_assert(detail::is_reflected_v<D, S>, "magic_enum requires enum implementation and valid max and min.");
1377
1378
3.04k
  if constexpr (detail::is_sparse_v<D, S> || (S == detail::enum_subtype::flags)) {
1379
#if defined(MAGIC_ENUM_ENABLE_HASH)
1380
    return detail::constexpr_switch<&detail::values_v<D, S>, detail::case_call_t::value>(
1381
        [](D v) { return optional<D>{v}; },
1382
        static_cast<D>(value),
1383
        detail::default_result_type_lambda<optional<D>>);
1384
#else
1385
24.3k
    for (std::size_t i = 0; i < detail::count_v<D, S>; ++i) {
1386
21.3k
      if (value == static_cast<underlying_type_t<D>>(enum_value<D, S>(i))) {
1387
1
        return static_cast<D>(value);
1388
1
      }
1389
21.3k
    }
1390
3.04k
    return {}; // Invalid value or out of range.
1391
3.04k
#endif
1392
  } else {
1393
    if (value >= detail::min_v<D, S> && value <= detail::max_v<D, S>) {
1394
      return static_cast<D>(value);
1395
    }
1396
    return {}; // Invalid value or out of range.
1397
  }
1398
3.04k
}
1399
1400
// Returns enum value from name.
1401
// Returns optional with enum value.
1402
template <typename E, detail::enum_subtype S = detail::subtype_v<E>, typename BinaryPredicate = std::equal_to<>>
1403
3.04k
[[nodiscard]] constexpr auto enum_cast(string_view value, [[maybe_unused]] BinaryPredicate p = {}) noexcept(detail::is_nothrow_invocable_v<BinaryPredicate>) -> detail::enable_if_t<E, optional<std::decay_t<E>>, BinaryPredicate> {
1404
3.04k
  using D = std::decay_t<E>;
1405
3.04k
  static_assert(detail::is_reflected_v<D, S>, "magic_enum requires enum implementation and valid max and min.");
1406
1407
#if defined(MAGIC_ENUM_ENABLE_HASH)
1408
  if constexpr (detail::is_default_predicate_v<BinaryPredicate>) {
1409
    return detail::constexpr_switch<&detail::names_v<D, S>, detail::case_call_t::index>(
1410
        [](std::size_t i) { return optional<D>{detail::values_v<D, S>[i]}; },
1411
        value,
1412
        detail::default_result_type_lambda<optional<D>>,
1413
        [&p](string_view lhs, string_view rhs) { return detail::cmp_equal(lhs, rhs, p); });
1414
  }
1415
#endif
1416
24.3k
  for (std::size_t i = 0; i < detail::count_v<D, S>; ++i) {
1417
21.2k
    if (detail::cmp_equal(value, detail::names_v<D, S>[i], p)) {
1418
15
      return enum_value<D, S>(i);
1419
15
    }
1420
21.2k
  }
1421
3.03k
  return {}; // Invalid value or out of range.
1422
3.04k
}
1423
1424
// Returns true if enum contains value with such value.
1425
template <typename E, detail::enum_subtype S = detail::subtype_v<E>>
1426
[[nodiscard]] constexpr auto enum_contains(E value) noexcept -> detail::enable_if_t<E, bool> {
1427
  using D = std::decay_t<E>;
1428
  using U = underlying_type_t<D>;
1429
1430
  return static_cast<bool>(enum_cast<D, S>(static_cast<U>(value)));
1431
}
1432
1433
// Returns true if enum contains value with such value.
1434
template <detail::enum_subtype S, typename E>
1435
[[nodiscard]] constexpr auto enum_contains(E value) noexcept -> detail::enable_if_t<E, bool> {
1436
  using D = std::decay_t<E>;
1437
  using U = underlying_type_t<D>;
1438
1439
  return static_cast<bool>(enum_cast<D, S>(static_cast<U>(value)));
1440
}
1441
1442
// Returns true if enum contains value with such integer value.
1443
template <typename E, detail::enum_subtype S = detail::subtype_v<E>>
1444
2.03k
[[nodiscard]] constexpr auto enum_contains(underlying_type_t<E> value) noexcept -> detail::enable_if_t<E, bool> {
1445
2.03k
  using D = std::decay_t<E>;
1446
1447
2.03k
  return static_cast<bool>(enum_cast<D, S>(value));
1448
2.03k
}
1449
1450
// Returns true if enum contains enumerator with such name.
1451
template <typename E, detail::enum_subtype S = detail::subtype_v<E>, typename BinaryPredicate = std::equal_to<>>
1452
[[nodiscard]] constexpr auto enum_contains(string_view value, BinaryPredicate p = {}) noexcept(detail::is_nothrow_invocable_v<BinaryPredicate>) -> detail::enable_if_t<E, bool, BinaryPredicate> {
1453
  using D = std::decay_t<E>;
1454
1455
  return static_cast<bool>(enum_cast<D, S>(value, std::move(p)));
1456
}
1457
1458
// Returns true if the enum integer value is in the range of values that can be reflected.
1459
template <typename E, detail::enum_subtype S = detail::subtype_v<E>>
1460
[[nodiscard]] constexpr auto enum_reflected(underlying_type_t<E> value) noexcept -> detail::enable_if_t<E, bool> {
1461
  using D = std::decay_t<E>;
1462
1463
  if constexpr (detail::is_reflected_v<D, S>) {
1464
    constexpr auto min = detail::reflected_min<E, S>();
1465
    constexpr auto max = detail::reflected_max<E, S>();
1466
    return value >= min && value <= max;
1467
  } else {
1468
    return false;
1469
  }
1470
}
1471
1472
// Returns true if the enum value is in the range of values that can be reflected.
1473
template <typename E, detail::enum_subtype S = detail::subtype_v<E>>
1474
[[nodiscard]] constexpr auto enum_reflected(E value) noexcept -> detail::enable_if_t<E, bool> {
1475
  using D = std::decay_t<E>;
1476
1477
  return enum_reflected<D, S>(static_cast<underlying_type_t<D>>(value));
1478
}
1479
1480
// Returns true if the enum value is in the range of values that can be reflected.
1481
template <detail::enum_subtype S, typename E>
1482
[[nodiscard]] constexpr auto enum_reflected(E value) noexcept -> detail::enable_if_t<E, bool> {
1483
  using D = std::decay_t<E>;
1484
1485
  return enum_reflected<D, S>(value);
1486
}
1487
1488
template <bool AsFlags = true>
1489
inline constexpr auto as_flags = AsFlags ? detail::enum_subtype::flags : detail::enum_subtype::common;
1490
1491
template <bool AsCommon = true>
1492
inline constexpr auto as_common = AsCommon ? detail::enum_subtype::common : detail::enum_subtype::flags;
1493
1494
namespace bitwise_operators {
1495
1496
template <typename E, detail::enable_if_t<E, int> = 0>
1497
constexpr E operator~(E rhs) noexcept {
1498
  return static_cast<E>(~static_cast<underlying_type_t<E>>(rhs));
1499
}
1500
1501
template <typename E, detail::enable_if_t<E, int> = 0>
1502
constexpr E operator|(E lhs, E rhs) noexcept {
1503
  return static_cast<E>(static_cast<underlying_type_t<E>>(lhs) | static_cast<underlying_type_t<E>>(rhs));
1504
}
1505
1506
template <typename E, detail::enable_if_t<E, int> = 0>
1507
constexpr E operator&(E lhs, E rhs) noexcept {
1508
  return static_cast<E>(static_cast<underlying_type_t<E>>(lhs) & static_cast<underlying_type_t<E>>(rhs));
1509
}
1510
1511
template <typename E, detail::enable_if_t<E, int> = 0>
1512
constexpr E operator^(E lhs, E rhs) noexcept {
1513
  return static_cast<E>(static_cast<underlying_type_t<E>>(lhs) ^ static_cast<underlying_type_t<E>>(rhs));
1514
}
1515
1516
template <typename E, detail::enable_if_t<E, int> = 0>
1517
constexpr E& operator|=(E& lhs, E rhs) noexcept {
1518
  return lhs = (lhs | rhs);
1519
}
1520
1521
template <typename E, detail::enable_if_t<E, int> = 0>
1522
constexpr E& operator&=(E& lhs, E rhs) noexcept {
1523
  return lhs = (lhs & rhs);
1524
}
1525
1526
template <typename E, detail::enable_if_t<E, int> = 0>
1527
constexpr E& operator^=(E& lhs, E rhs) noexcept {
1528
  return lhs = (lhs ^ rhs);
1529
}
1530
1531
} // namespace magic_enum::bitwise_operators
1532
1533
} // namespace magic_enum
1534
1535
#if defined(__clang__)
1536
#  pragma clang diagnostic pop
1537
#elif defined(__GNUC__)
1538
#  pragma GCC diagnostic pop
1539
#elif defined(_MSC_VER)
1540
#  pragma warning(pop)
1541
#endif
1542
1543
#undef MAGIC_ENUM_GET_ENUM_NAME_BUILTIN
1544
#undef MAGIC_ENUM_GET_TYPE_NAME_BUILTIN
1545
#undef MAGIC_ENUM_VS_2017_WORKAROUND
1546
#undef MAGIC_ENUM_ARRAY_CONSTEXPR
1547
#undef MAGIC_ENUM_FOR_EACH_256
1548
1549
#endif // NEARGYE_MAGIC_ENUM_HPP