1
0
Fork 0
mirror of https://github.com/Neargye/magic_enum.git synced 2026-01-08 23:24:20 +00:00
Commit graph

360 commits

Author SHA1 Message Date
neargye
341521b9c0 fix build 2025-11-21 19:06:51 +04:00
neargye
a0db691691 fix #397 2025-11-21 18:34:56 +04:00
neargye
3e5609848e fix empry sting and static_str string_view conversion 2025-11-21 18:13:46 +04:00
neargye
0f47904705 fix multiple definitions of adl_info 2025-09-05 19:51:55 +04:00
neargye
083298a045 fix namespace 2025-09-01 01:21:32 +04:00
ZXShady
aaf57737d5
Add prefix trimming (#414) 2025-08-31 22:56:19 +04:00
Ryan Saunders
ecdeb1cea5
Fix __FUNCSIG__ parsing on x86 by explicitly declaring the calling convention (#405) 2025-06-27 15:25:18 +04:00
neargye
a733a2ea66 clean-up 2025-06-11 21:39:34 +04:00
ZXShady
d642b05dcb
Add adl_ranges (#413)
Co-authored-by: lsemprini <17140216+lsemprini@users.noreply.github.com>
2025-06-11 21:00:01 +04:00
Thomas Khyn
a413fcc9c4
fix: use inline instead of static for constexpr in header file (#401)
Using `static constexpr` in a header file does not seem to be correct - see [1] - and generates a bug when building the magic_enum module with GCC 15

[1] https://isocpp.org/blog/2018/05/quick-q-use-of-constexpr-in-header-file
2025-02-20 12:38:17 +04:00
Daniil Goncharov
ff6e5dd1c8
fix 379 (#382) 2025-02-20 12:37:47 +04:00
A. Jiang
2ec43969d8
More reliable value validness detection towards CWG1766 (#398)
CWG1766 made out-of-range cast to enumeration without fixed underlying
type raise undefined behavior. Such UB arguably also applies to
`bit_cast`, although it's not required that UB in `bit_cast` makes the
expression non-constant.

Currently, only Clang has implemented CWG1766, while Clang's underlying
`__builtin_bit_cast` happens to be a workaround. However, it's more
reliable to me to rely on the guarantee that core language UB causes
constant evaluation failure.

The approach in this patch effectively detects whether
`std::integral_constant<E, static_cast<E>(V)>` is a valid type, which is
equivalent to whether `static_cast<E>(V)` is a constant expression. When
the answer is `false`, value `V` can't be an enumerator of `E`.
2025-02-20 12:34:09 +04:00
neargye
e046b69a37 v0.9.7 2024-11-14 00:15:10 +01:00
Bastian Schmitz
15a085f234
fix enum_fuse shift value calculation (Neargye#386) (#387) 2024-11-14 00:04:44 +01:00
Ricardo Cardoso
ec8b0e985f
Update comments regarding max and min (#369)
The comments in the code regarding MAGIC_ENUM_RANGE_MIN and MAGIC_ENUM_RANGE_MAX values were not updated according to the latest changes on those default values.
2024-07-25 11:29:56 +03:00
asolwa
9a9308fd54
fix bitset constructor (#367) 2024-07-19 15:51:58 +03:00
Atanov Mikhail
664ee62c12
Parameterize formatter::format to use with FMT_COMPILE (#365) 2024-07-08 20:37:57 +03:00
neargye
dd6a39d0ba v0.9.6 2024-06-29 17:17:06 +03:00
neargye
f08355cd0d fix enum_reflected 2024-06-29 17:01:20 +03:00
neargye
bc2e94853b add enum_reflected 2024-06-29 16:47:56 +03:00
LEE KYOUNGHEON
db0b726c05
Add MAGIC_ENUM_USE_STD_MODULE option to use standard library module. (#350) 2024-05-28 00:17:33 +03:00
Daniil Goncharov
801c68bdc9
fix wshadow (#354) 2024-05-25 17:35:16 +03:00
LEE KYOUNGHEON
7afc57b194
Support C++20 module. (#343) 2024-05-09 00:02:49 +03:00
neargye
ec11ae0c28 removed restrictions on maximum range size 2024-02-22 14:23:33 +04:00
neargye
414fb654d3 update copyright 2024-01-02 02:50:34 +04:00
neargye
aa465f7f37 update doc and example 2024-01-02 02:39:10 +04:00
neargye
9565965afd clean-up 2024-01-02 02:04:57 +04:00
neargye
e26b05e0a0 clean-up 2023-12-18 00:56:13 +04:00
Daniil Goncharov
e09f25780a
checking that the enum is valid (not empty and not forward declaration) (#323) 2023-12-16 17:00:00 +04:00
neargye
41f674b061 fix enum_fuse 2023-12-09 23:56:44 +04:00
Justin Boswell
804738ba8a
Add support for overriding MAGIC_ENUM_ASSERT (#322) 2023-12-06 11:46:57 +04:00
neargye
e55b9b54d5 v0.9.5 2023-11-16 12:32:10 +04:00
neargye
677636ec43 clean-up 2023-11-15 23:07:55 +04:00
Arkhipov Ivan
56dcb011c2
Put get to magic_enum::containers namespace (#316) 2023-11-15 22:25:49 +04:00
Ryan Samarakoon
cd5fd2c343
Fix set erase function (#308) 2023-11-12 17:30:10 +04:00
neargye
eb867ec9ba put headers in include/magic_enum directory 2023-11-12 01:11:55 +04:00
Vitaly
5523803cfc
Explicitly mark the result of detail::names as constexpr (#305)
It might make no sense, but on MSVC it can generate a compile-time
error, especially if an enumerator's value is out of range.

Example:
error C3615: constexpr function 'magic_enum::detail::names' cannot
result in a constant expression
...
note: failure was caused by call of undefined function or one not
declared 'constexpr'
...
note: see usage of '__builtin_array_init_helper'
2023-11-09 14:09:37 +04:00
Ralph J. Steinhagen
5cf4eb3a53
fixes 'std::ptrdiff_t' to 'std::size_t' casting error and suppresses -Wuseless-cast warning for gcc and clang (#306)
* fixes 'std::ptrdiff_t' to 'std::size_t' casting error

addresses this compiler warning:

```text
[..]/magic_enum_utility.hpp:101:31: warning: conversion to ‘std::size_t’ {aka ‘long unsigned int’} from ‘std::ptrdiff_t’ {aka ‘long int’} may change the sign of the result [-Wsign-conversion]
  101 |       return enum_value<D, S>(index);
      |                               ^~~~~
```

* suppresses `-Wuseless-cast` for static_cast<char_type>('\0')

needed in case 'char_type' is 'char' (common on Linux but rare on Windows?)

```text
[..]/magic_enum.hpp:275:114: warning: useless cast to type ‘using magic_enum::char_type = using std::basic_string_view<char>::value_type = char’ {aka ‘char’} [-Wuseless-cast]
  275 |   constexpr static_str(string_view str, std::integer_sequence<std::uint16_t, I...>) noexcept : chars_{str[I]..., static_cast<char_type>('\0')} {}
      |                                                                                                                  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
2023-11-09 14:07:16 +04:00
RaceTheMaSe
49bb72da8e
Remove superfluous semicolon (#304) 2023-10-19 01:53:37 +03:00
neargye
d67973d118 fix Argument-dependent lookup results in enum_switch 2023-10-04 19:14:27 +04:00
neargye
dfcd851dba fix build 2023-10-04 19:13:20 +04:00
neargye
ed8bb5d63a check for -D__PRETTY_FUNCTION__=__FUNCTION__ 2023-10-04 19:04:09 +04:00
neargye
b291b0ce5a fix fmt::formatter 2023-09-20 18:44:31 +04:00
neargye
45c8b5d92c update doc 2023-08-14 18:41:40 +04:00
neargye
4904822db8 fix CLI/C++ 2023-06-28 20:05:12 +04:00
neargye
e1ea11a93d v0.9.3 2023-06-22 17:22:05 +04:00
neargye
4555faae9e clean-up containers 2023-06-22 17:05:17 +04:00
neargye
288cb71861 clean-up containers 2023-06-21 12:57:55 +04:00
neargye
43070070e6 fix enum_type_name in namespace 2023-06-21 12:45:59 +04:00
neargye
8107ceb0fa format containers throw 2023-06-19 12:28:18 +04:00