Bonjour
J'ai d�fini une classe dont l'instantiation est assez verbeuse.
Pour faciliter son usage et sa lisibilit� j'utilise une macro, mais je souhaiterais plut�t utiliser un typedef ou un using.
Exemple:
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
9 template<class C, typename T, T C::*P> struct my_trait { typedef C class_type; typedef T member_type; static constexpr T C::* offset = P; }; #define MY_TRAIT(table, field) my_trait<table, decltype(table::field), &table::field>L'usage de la macro ci-dessus est nettement plus lisible, mais j'aimerais utiliser quelque chose comme ceci:
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
9
10
11
12 struct my_class { std::string m_Name; //... }; ... typename my_trait<my_class, decltype(my_class::m_Name), &my_class::m_Name>::member_type name;//un peu lourd ... typename MY_TRAIT(my_class, m_Name)::member_type name;//mieux, mais c'est une macro
... et je ne trouve pas
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5 template<class C> using my_name = my_trait<C, decltype(C::m_Name), &C::m_Name>;//ok, mais comment "templatiser" m_Name ? template<class C, ??? M> using my_member = my_trait<C, decltype(C::M), &C::M>;//euh... comment ???
Merci pour votre aide.
Partager