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.
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>
Exemple:
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
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
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 ???
... et je ne trouve pas
Merci pour votre aide.