Bonjour.
Histoire de jouer avec les lambda, j'ai voulue créer un système de property comme en C#
spécialisation pour le GET
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 enum PropertyAccess { G = 1, S = 2, G_S }; template<typename T,PropertyAccess pa = G_S> struct Property { private : //interdit la copie Property<T,pa> & operator=(const Property<T,pa> & ); };
spécialisation pour le SET
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 template<typename T> struct Property<T,G> { std::function< T ()> GET; operator T () {return GET();}; };
spécialisation pour le GET et le SET qui me pose problème
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 template<typename T> struct Property< T,S> { std::function< void ( const T &)> SET; void operator = ( const T & t) {SET(t);} };
Pour que le compilateur trouve l'operateur = je doit réécrire
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 template<typename T> struct Property<typename T,G_S> : public Property< typename T,S>, Property<typename T,G> { };
Alors qu'il en hérite de la spécialisation pour le SET
Code : Sélectionner tout - Visualiser dans une fenêtre à part void operator = ( const T & t) {SET(t);}
Visual 2010 et mingw 4.5.2 me font le même problème.
Partager