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_Ty
int
ist.
Dies ist sowieso schlecht formatierter Code. Wie genau erstellen Sie ein Referenzpaar, ohne es an etwas zu binden? –
@ T.C .: Danke, der Typ hat sich bei mir nicht registriert. Meine Antwort wurde entsprechend korrigiert. –
@ T.C. Danke, ich habe es geändert, um 'std :: pair' zu verwenden und es hat funktioniert. –