RSS jeremykun | Math ∩ Programmation

Détecter les noms de champs avec la métaprogrammation C++

Une note rapide : vous pouvez utiliser les templates C++11 pour détecter les champs struct par nom et type, et les brancher statiquement. J'ai entendu parler de cette solution pour la première fois par breeze1990. Supposons que je veuille détecter si une structure a un champ de taille de type int. Créer deux instanciations de template du même nom, ici HasStaticSize qui prend par défaut la valeur false. #include template struct HasStaticSize : std::false_type {} ; template struct HasStaticSize< T, typename std::enable_if< std::is_same>::value, void>::type> : std::true_type {} ; Ce dernier n'est résolu que si T::size est déclaré comme int, ou plus précisément, quelque chose qui se "décompose" en int.
favicon
jeremykun.com
Detecting field names with C++ metaprogramming
Create attached notes ...