je le suivant modèle « main »:« Application partielle » pour les paramètres du modèle
template <
template <typename> class S
> struct TT { /*...*/ };
et le modèle que je veux utiliser avec TT
:
template <int N, typename T> struct S1 {};
Je veux, en particulier, d'utiliser quelque chose comme
TT< S1<5> > t2; // "Invalid template arguments" here
C'est une sorte d'application partielle pour les modèles. Je sais que Boost.MPL implique ce genre de choses. Le problème est que j'ai déjà du code en utilisant TT et des modèles comme
template <typename T> struct S2 {}; // S3, S4…
qui sont alimentés à TT.
Donc la question est: comment puis-je utiliser S1
avec TT
avec les plus petites modifications au code existant. S'il est obligatoire d'utiliser Boost.MPL, veuillez me montrer la solution la plus appropriée.
est 'modèle struct TT {/*...*/};' pas une option? –
'TT < S1<5>> t2;' il vous manque le second argument de S1. Maître de l'évidente et à l'extérieur. – AJG85
@Mooing Merci, j'ai déjà considéré cette option, mais TT a vraiment typedef interne (disons P) qui est vraiment un "détail d'implémentation" et TT spécifie S avec P. À ce stade, je ne vois pas comment puis-je faire TT accepte le type au lieu du modèle avec au moins un paramètre de type. –