Il existe une spécification technique C ++ sur la réflexion statique (brouillon PDF actuel et page de référence) qui pourrait passer à C ++ 23 ou version ultérieure. Serait-ce possible dans le projet actuel (je comprends ...

0
Andreas H. 14 mars 2021 à 16:52

1 réponse

Meilleure réponse

get_pointer<X> vous donne un pointeur vers le membre, get_name<X> obtient son nom. Ajoutez quelques itérations sur les membres (également fournis), et la gestion de l'incompatibilité de type (ce qui pourrait être fait dans ), et bob est votre oncle.

C ++ donne des primitives de réflexion au moment de la compilation; vous devez donc écrire vous-même le code de la colle pour autant que je sache.

Je commencerais par une fonction créant un tuple de paires (nom du pointeur de membre) en utilisant la réflexion. Cela peut être pur constexpr.

Ensuite, une autre fonction qui effectue un réglage basé sur cette structure, où l'échec d'exécution est en cours.

Cela vous permettra de tester les deux pièces séparément; seule la construction du «dictionnaire» nécessite une réflexion.

1
Yakk - Adam Nevraumont 14 mars 2021 à 19:10