J'ai une fonction virtuelle dans une tâche de modèle C++, et quand elle est compilée dans Visual Studio 2015 (j'ai essayé toutes les combinaisons de Debug/Release et x86/x64), il échoue toujours avec l'erreur du compilateur C1001 sur la ligne de code suivante:Erreur C1001: Une erreur interne s'est produite dans le compilateur
e_Ty *d(new e_Ty[l]);
Où e_Ty
est le paramètre de modèle de la classe. Cette erreur se produit uniquement lorsque j'utilise la classe de modèle avec e_Ty
définie sur std::pair<const int &, int &>
. Y at-il une raison légitime pour laquelle cela ne devrait pas fonctionner, ou est-ce un bug dans MSVC?
EDIT
Notes:
l
est une variable locale qui a été déclarée (et attribuer une valeur à la suite d'un appel de fonction) à l'avance.- J'ai essayé d'utiliser l'optimisation de désactivation, en utilisant
auto
, et en utilisant l'initialisation de style d'assignation, aucune d'entre elles n'a fonctionné. Le code compile bien lorsquee_Ty
estint
.
Ce code est mal formé de toute façon. Comment exactement créez-vous une paire de références sans les lier à quoi que ce soit? –
@ T.C .: Merci, le type n'a pas enregistré avec moi. J'ai corrigé ma réponse en conséquence. –
@ T.C. Merci, je l'ai changé pour utiliser 'std :: pair' et cela a fonctionné. –