Conversation
|
One of the tests failed for 932ef26. @admin check logs None, packit dashboard https://dashboard.packit.dev/jobs/copr/3128523 and external service dashboard https://copr.fedorainfracloud.org/coprs/build/9977010/ |
|
One of the tests failed for d620209. @admin check logs https://download.copr.fedorainfracloud.org/results/packit/stephenberry-glaze-2217/fedora-rawhide-ppc64le/09977031-glaze/builder-live.log, packit dashboard https://dashboard.packit.dev/jobs/copr/3128544 and external service dashboard https://copr.fedorainfracloud.org/coprs/build/9977031/ |
|
One of the tests failed for 9de4ae5. @admin check logs https://download.copr.fedorainfracloud.org/results/packit/stephenberry-glaze-2217/srpm-builds/09977126/builder-live.log, packit dashboard https://dashboard.packit.dev/jobs/srpm/526206 and external service dashboard https://copr.fedorainfracloud.org/coprs/build/9977126/ |
|
One of the tests failed for 4fb6b49. @admin check logs None, packit dashboard https://dashboard.packit.dev/jobs/copr/3128640 and external service dashboard https://copr.fedorainfracloud.org/coprs/build/9977197/ |
|
One of the tests failed for f7618dd. @admin check logs https://download.copr.fedorainfracloud.org/results/packit/stephenberry-glaze-2217/srpm-builds/09980686/builder-live.log, packit dashboard https://dashboard.packit.dev/jobs/srpm/526779 and external service dashboard https://copr.fedorainfracloud.org/coprs/build/9980686/ |
|
One of the tests failed for 667abce. @admin check logs None, packit dashboard https://dashboard.packit.dev/jobs/copr/3131874 and external service dashboard https://copr.fedorainfracloud.org/coprs/build/9980754/ |
|
One of the tests failed for 19e3877. @admin check logs None, packit dashboard https://dashboard.packit.dev/jobs/copr/3206324 and external service dashboard https://copr.fedorainfracloud.org/coprs/build/10079343/ |
|
One of the tests failed for 090c5c6. @admin check logs None, packit dashboard https://dashboard.packit.dev/jobs/copr/3206307 and external service dashboard https://copr.fedorainfracloud.org/coprs/build/10079337/ |
|
One of the tests failed for dc878ec. @admin check logs None, packit dashboard https://dashboard.packit.dev/jobs/copr/3342323 and external service dashboard https://copr.fedorainfracloud.org/coprs/build/10198419/ |
C++26 P2996 Reflection Support
This PR adds experimental support for C++26 static reflection (P2996) to Glaze.
Overview
When compiled with
-DGLZ_REFLECTION26=1and a P2996-compatible compiler, Glaze usesstd::meta::nonstatic_data_members_offor automatic struct reflection instead of the traditional aggregate-based approach. This enables reflection of:glz::metaspecializationsKey Changes
The
specifiedTraitIntroduced
glz::specified<T>trait andglz::is_specified<T>concept to mark types with custom Glaze serialization. This prevents P2996 from automatically reflecting types that already have explicitto/fromimplementations, avoiding template ambiguity.Types marked as
specified:std::tuple,std::variant,std::reference_wrapper,std::complex,std::bitsetduration,time_point,year_month_day,hh_mm_ssasync_vector,async_string,shared_async_vector,shared_async_map,asyncMatrix,Transform,RefSimplified
reflectableConceptThe P2996 version of
reflectableis cleaner since P2996 handles the complexity:CI Integration
Added GitHub Actions workflow using the
vsavkov/clang-p2996Docker image for automated testing.Other Fixes
std::is_trivial_vdeprecation warning for C++26bool_tconcept to handlestd::vector<bool>::const_referencevariant<...>instead ofstd::variant<...>)Building with P2996
cmake -B build \ -DCMAKE_CXX_FLAGS='-std=c++26 -freflection -fexpansion-statements' \ -Dglaze_ENABLE_REFLECTION26=ONKnown Limitations
jsonrpc_testis excluded due to a libc++std::expectedconstraint recursion bug in the experimental compilerstd::prefix)