La questione e' ""spinosa""
1) C++ ha un "microscopico" supporto per il reflection, basato sul "RTTI" (Runtime Type Information) che serve SOLO per fare il "casting" di una classe da un tipo ad un'altro (quando il casting NON E' banale)
2) FORSE introduranno il supporto al reflection in C++23
https en.cppreference.com/w/cpp/keyword/reflexpr
3) per i "constraint" nei template, altra "rogna rognosa", ci sono i "concept"
https en.cppreference.com/w/cpp/language/constraints
ma che comunque possono essere ""simulati"" usando la "template programming"
4) con un po' di pazienza, trovi delle librerie che implementano la "reflection" in modo non eccessivamente orrendo
(cerca "reflection")
5) in ""teoria"" un set completo di informazioni per implementare il reflection le trovi nelle informazioni di "debug". Il problema e' che trovare la documentazione su ""COME"" tali informazioni sono salvate e' davvero complicato.