Je veux passer une spécialisation de modèle partiel à un paramètre de modèle de modèle mais je reçois une erreur. Je ne suis pas sûr exactement pourquoi cela ne fonctionne pas.
template class V, typename T, int N, int... Indexes>
class Swizzle
{
// ...
};
template
struct Vector;
template
struct Vector
{
// ...
union
{
// ...
Swizzle xxx;
};
};
Erreur:
'Vector' : argument de modèle invalide pour le paramètre de modèle 'V', un modèle de classe 'Swizzle' est attendu : l'utilisation d'un modèle de classe exige une liste d'arguments de modèle
Le problème apparaît uniquement sur MSVC
1 votes
Quel compilateur et quels drapeaux utilisez-vous? Ce code suffit-il pour reproduire le problème? Cela fonctionne pour moi sur Coliru une fois que j'ajoute quelques points-virgules.
0 votes
En fait, cela fonctionne sur mingw730_32.
0 votes
Je suis en train d'utiliser VS2019 et de corriger les points-virgules manquants, mais cela produit toujours cette erreur. J'ai essayé de coller le reste de mon code dans godbolt en utilisant clang comme compilateur, cela fonctionne donc je suppose que cela doit être une erreur de VS2019?.
0 votes
Hors sujet:
union
en code C++ n'est pas une bonne idée. Notez qu'il y astd::variant
(c++17) qui est une version moderne de l'union
.