|Magic Enum C++||pfr|
|6 days ago||4 days ago|
|MIT License||Boost Software License 1.0|
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
Magic Enum C++
What C++ library do you wish existed but hasn’t been created yet?
18 projects | /r/cpp | 8 Jul 2023
I'm not sure this is quite what you're asking for, but this library has been super helpful to me in the past : https://github.com/Neargye/magic_enum
Fully Permissive License C++ Logger For Embedded System
6 projects | /r/embedded | 28 Jun 2023
Also, a shoutout to Magic Enum: https://github.com/Neargye/magic_enum
enum_name (yet another enum to/from string conversion utility >=C++11)
4 projects | /r/cpp | 19 Mar 2023
What does this have to offer over magic_enum?
quill v2.7.0 released - Asynchronous Low Latency C++ Logging Library
3 projects | /r/cpp | 6 Feb 2023
But it's a hack, and I prefer not to use hacks in production, because of their significant limitations:
Enums with methods
2 projects | /r/cpp | 27 Dec 2022
Why reinvent the wheel? magic_enum
Macro to write enum and converter from and to string
2 projects | /r/cpp_questions | 26 Oct 2022
I strongly recommend that you instead use magic_enum::enum_cast2 projects | /r/cpp_questions | 26 Oct 2022
Magic Enum provides that.
New to Programming and Would Like a Code Review or Tips on Readability
3 projects | /r/cpp_questions | 15 Oct 2022
While I can understand the sentiment behind that it makes for a poor solution because people seeing the enum will assume it's a valid entry. A better solution is to use something like magic enum for that case.
What are some cool modern libraries you enjoy using?
32 projects | /r/cpp | 18 Sep 2022
magic_enum by far. It has an extreme amount of black magic, and compiler specific stuff all abstracted away behind its extremely neat user interface.
what annoys you most while using c++?
5 projects | /r/cpp | 28 Aug 2022
Minimum viable declarative GUI in C++
3 projects | /r/cpp | 23 Mar 2022
The code is relatively short and can be groked with a few coffees: https://github.com/boostorg/pfr/tree/develop/include/boost/pfr ; if you're using C++17 it uses a binary search (https://github.com/boostorg/pfr/blob/develop/include/boost/pfr/detail/fields_count.hpp) to count the number of fields in a struct, by starting by the observation that a likely majorant on the number of fields in a struct is sizeof(the struct) * CHAR_BIT, assuming not too many [[no_unique_address]] tomfooleries. Then once this count is known it's possible to simply map them as a tuple through sheer brute force and destructuring: https://github.com/boostorg/pfr/blob/develop/include/boost/pfr/detail/core17_generated.hpp
The Serde Rust Framework
14 projects | news.ycombinator.com | 14 Oct 2021
I wonder if the c++ approach of boost.pfr would be portable to rust ? It allows reflection on aggregates without needing to annotate anything: https://github.com/boostorg/pfr
Counting the number of fields in an aggregate in C++20
2 projects | /r/cpp | 14 Mar 2021
It is an 'interesting' meta-programming problem though (wasted many weeks on it myself, fixed a small gcc bug - a 'uniform init' edge case and filed an issue with magic_get Reflecting array members of aggregate structs).
What are some alternatives?
Nameof C++ - Nameof operator for modern C++, simply obtain the name of a variable, type, function, macro, and enum
Protobuf - Protocol Buffers - Google's data interchange format
cereal - A C++11 library for serialization
FlatBuffers - FlatBuffers: Memory Efficient Serialization Library
Boost.Serialization - Boost.org serialization module
rttr - C++ Reflection Library
Bitsery - Your binary serialization library
wise_enum - A reflective enum implementation for C++
protozero - Minimalist protocol buffer decoder and encoder in C++
cppbor - An implementation of cbor using C++ 17 variants
MessagePack - MessagePack implementation for C and C++ / msgpack.org[C/C++]
tomlplusplus - Header-only TOML config file parser and serializer for C++17.