0

Ich habe eine virtuelle Funktion in einer C++ - Vorlage, und wenn es in Visual Studio 2015 kompiliert wird (Ich habe alle Kombinationen von Debug/Release und x86/x64 versucht), es scheitert konsequent mit Compiler-Fehler C1001 auf der folgenden Codezeile:Fehler C1001: Ein interner Fehler ist im Compiler aufgetreten

e_Ty *d(new e_Ty[l]); 

Wo e_Ty die Template-Parameter der Klasse ist. Dieser Fehler tritt nur auf, wenn ich die Vorlagenklasse mit e_Ty auf std::pair<const int &, int &> verwende. Gibt es einen legitimen Grund, warum dies nicht funktionieren sollte, oder ist das ein Fehler in MSVC?


EDIT

Hinweise:

  • l ist eine lokale Variable, die deklariert wurde (und Wert als Ergebnis eines Funktionsaufrufs zugewiesen) vor der Zeit.
  • Ich habe versucht, die Optimierung zu deaktivieren, mit auto, und mit Zuordnung-Stil-Initialisierung, von denen keiner funktionierte.
  • Code wird gut kompiliert, wenn e_Tyint ist.
+0

Dies ist sowieso schlecht formatierter Code. Wie genau erstellen Sie ein Referenzpaar, ohne es an etwas zu binden? –

+0

@ T.C .: Danke, der Typ hat sich bei mir nicht registriert. Meine Antwort wurde entsprechend korrigiert. –

+0

@ T.C. Danke, ich habe es geändert, um 'std :: pair ' zu verwenden und es hat funktioniert. –

Antwort

4

Ein interner Compiler-Fehler, ein ICE ist immer ein Fehler.

Bitte melden Sie es über Microsoft Connect.


Der Code in Frage,

e_Ty *d(new e_Ty[l]); 

& hellip; kann oder kann nicht korrekt sein in Abhängigkeit von l, ob entsprechende Header enthalten sind, und so weiter. Es gibt zu wenig Kontext, um es zu sagen. ist ungültig für e_Ty als std::pair von Referenzen, weil Referenzen initialisiert werden müssen, wie noted by T.C.. Aber das ist für einen ICE nicht wichtig.

+0

Vielen Dank, ich werde es bei Microsoft einreichen. Außerdem habe ich meine Frage bearbeitet, um klarzustellen, dass "l" eine lokale Variable ist und dass sie mit "int" arbeitet. –

+1

_Ein interner Compiler-Fehler, ein ICE, ist immer ein Bug. _ Jemand würde es trotzdem _ein Feature_ nennen. :-) – skypjack

+0

Siehe [diesen Artikel] (https://support.microsoft.com/en-us/kb/974229) für Details zur Herstellung einer guten Repro –

Verwandte Themen