0

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]); 

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 lorsque e_Ty est int.
+0

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? –

+0

@ T.C .: Merci, le type n'a pas enregistré avec moi. J'ai corrigé ma réponse en conséquence. –

+0

@ T.C. Merci, je l'ai changé pour utiliser 'std :: pair ' et cela a fonctionné. –

Répondre

4

Une erreur interne du compilateur, un ICE, est toujours un bug.

Veuillez le signaler via Microsoft Connect.


Le code en question,

e_Ty *d(new e_Ty[l]); 

& hellip; peut ou peut ne pas être correct selon l, si les en-têtes appropriés ont été inclus, et ainsi de suite. Il y a trop peu de contexte à dire. n'est pas valide pour e_Ty en tant que std::pair de références, car les références doivent être initialisées, comme noted by T.C.. Mais cela n'a pas d'importance pour un ICE.

+0

Merci, je vais le soumettre à Microsoft. De plus, j'ai édité ma question pour clarifier que 'l' est une variable locale, et qu'elle fonctionne avec' int'. –

+1

_Une erreur de compilateur interne, un ICE, est toujours un bogue._ Quelqu'un l'appellerait _a feature_ de toute façon. :-) – skypjack

+0

Voir [cet article] (https://support.microsoft.com/fr-fr/kb/974229) pour plus de détails sur la réalisation d'une bonne repro –