Question

Je voudrais construire la bibliothèque olb3d avec mon studio visuel compilateur 2005, mais ce Failes en raison d'erreurs de modèle.

Pour être plus précis, l'expression suivante semble être un problème:

void function(T u[Lattice<T>::d])

Sur le site du projet est dit que prpably mon compilateur ne permet pas de telles expressions de modèle complexes -. On doit utiliser le gcc 3.4.1

Ma question est maintenant s'il y a un moyen de mettre à jour mon vs compilateur c ++ il peut gérer des expressions de modèle au niveau que le gcc 3.4.1? Peut-être que ça aide si je reçois une nouvelle version de Visual Studio?

Vive C.

Était-ce utile?

La solution

Le compilateur dit qu'il ne peut pas en déduire le type de modèle. Vous pouvez toujours l'aider à sortir en spécifiant le type lui-même dans votre code.

foo<int>(some_int_array);

Cependant, la partie entre [] qui est trébucher vers le haut est totalement dénuée de sens. Les tableaux se désintègrent en pointeurs et la valeur est ignorée en premier lieu. Vous pouvez faire un commentaire sur cette partie si cela est un exemple réel.

Si vous prenez le tableau par référence, VC ++ 2005 ne semble pas avoir de problème avec elle soit:

template <class T>
void function(T (&arr)[Lattice<T>::n]);

(Est-il possible que le cas qui ne compile pas est tellement vide de sens que personne n'a jamais pris la peine de vérifier si des choses comme ça marche?)

Autres conseils

Acheter une nouvelle version de Visual Studio. 2005 est assez vieux et pas très conforme. Vous pouvez toujours tester le nouveau premier en téléchargeant Visual C ++ express .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top