3 ms·
Cereal requires a bit more copy & paste template boilerplate (it's a customization point) but they're basically the same. * libnop uses a macro called NOP_STRU
by nly 8y ago
Cereal requires a bit more copy & paste template boilerplate (it's a customization point) but they're basically the same.
* libnop uses a macro called NOP_STRUCTURE to create its key-value pairs.
* Cereal has a macro called CEREAL_NVP.
* Boost.Fusion has BOOST_FUSION_ADAPT_ASSOC_STRUCT
* Boost.Hana has BOOST_HANA_ADAPT_STRUCT
* Boost.Serialization has BOOST_SERIALIZATION_NVP
...all these things work the same way to get reflection
- coreytabaka 8y agoYes! Hopefully C++20 or C++25-ish will provide better alternatives for compile-time reflection. Don't forget that libnop also has NOP_EXTERNAL_STRUCTURE (and friends) to decouple the annotation from the structure definition. This is handy when you have a C ABI with C++ internal implementation. I don't recall seeing a similar facility in other libraries.
- nly 8y agoMost of the above macros work this way. Boost fusions macro will let you specify arbitrary code for getting and setting attributes.