Hello,
J'ai défini une classe templatisée (appelons la MaClasse) ayant sémantique de valeur. J'ai donc défini les opérateurs de comparaison.
Si B dérive de A, j'aimerais pouvoir comparer des instances MaClasse<A> et MaClasse<B>. Je comptais donc y aller à coup de enable_if et isbase_of :
Malheureusement, ça ne fonctionne pas : j'obtiens une erreur Visual C4519 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 template<typename T, typename IndexType=typename T::IndexType> struct SafeIndex { IndexType value; ... template <class U, template <typename> class V, class = typename std::enable_if<std::isbase_of<T,U>::value>> friend bool operator == (const SafeIndex<T>& lhs, const SafeIndex<U>& rhs) { return lhs.value == rhs.value; } ... };
default template arguments are only allowed on a class template
Comment faire ??
Merci.
Partager