Est-il possible de passer deux classes de gabarit dans une classe de gabarit? Je cherche à créer une classe qui détient deux std::tuple<std::vector<>>
différents. Je commence à soupçonner que ce que je veux accomplir ne peut pas être fait, mais je ne trouve rien qui dise le contraire.Paremètres de modèles de gabarits multiples pour la classe de gabarit
Voici le code, je travaille avec:
#include <iostream>
#include <vector>
#include <tuple>
template<typename... Ts>
struct Typelist
{
static constexpr std::size_t size { sizeof...(Ts) };
};
template<class, class> class World;
template<template<typename... Arg1> class T1, template<typename... Arg2> class T2>
class World<Typelist, Typelist>
{
private:
std::tuple<std::vector<T1>...> m1;
std::tuple<std::vector<T2>...> m2;
};
int main() {
// your code goes here
using TL1 = Typelist<int, char, double>;
using TL2 = Typelist<float, unsigned int, bool>;
World<TL1, TL2> w2;
return 0;
}
Est-ce possible, et si oui, qu'est-ce que je fais mal? Sinon, existe-t-il une alternative possible?
L'utilisation de 'World' n'est pas correcte car 'Typelist' n'est pas une classe. Vous pouvez utiliser 'World , Typelist >' mais il n'est pas clair à partir de votre message quelles seraient les valeurs sensibles pour 'args1' et' args2'. –
S'il vous plaît expliquez-moi quel est le but du tuple, ce n'est pas clair pour moi, car comme écrit il ya un seul type à l'intérieur, et vous abusez de l'opérateur '...'? Il n'y a pas de pack de paramètres à développer? Est-ce que vous essayez de faire 'std :: tuple ...>'? –
OmnipotentEntity