Je cherche à borner les paramètres d'une classe avec c++11 :
template<typename T, typename = typename std::enable_if<std::is_base_of<Classe, T>::value, T>::type>
class A
{
// ...
};
Ici le paramètre de la classe A est borné par la classe 'Classe'.
Et maintenant, je voudrais borner le paramètre par la classe elle-même.
template<typename T, typename = typename std::enable_if<std::is_base_of<A<T>, T>::value, T>::type>
class A
{
// ...
};
Mais là il me dit à la l.1 qu'il ne connait pas A. Donc j'ai essayé d'ajouter une previous declaration, sans spécifier le 2e paramètre du template. Mais du coup, le nombre de paramètre ne correspond pas. Du coup je suis un peu perdu.
template<typename T, typename U = typename std::enable_if<std::is_base_of<A<T,U>, T>::value, T>::type>
class A
{
// ...
};
As-tu essayé ça ? (je ne garantis pas que cela passe, mais si le CRTP s'applique bien, il te faut le nom complet de ta classe, et A<T,U> sera le nom complet de ta classe)
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
As-tu essayé ça ? (je ne garantis pas que cela passe, mais si le CRTP s'applique bien, il te faut le nom complet de ta classe, et A<T,U> sera le nom complet de ta classe)