Saturday, December 9, 2023

C++-Compilerfehler beim Mischen von Variadic-Vorlagen und Friend-Funktion – Microsoft-Support

Symptome

Wenn Sie versuchen, eine Variadic-Funktionsvorlage als Freund einer Klassenvorlage zu deklarieren, gibt der C++-Compiler eine Fehlermeldung zurück, anstatt den Code zu akzeptieren. Wenn Sie beispielsweise die folgende Deklaration durchführen:

template<typename T> struct B { }; template<typename... Types> struct C { }; template<typename... Types, typename U> void f(C<Types...>, B<U>) { } template<typename T> class A { template<typename... Types, typename U> friend void f(C<Types...>, B<U>); }; int main() { f(C<int>{}, B<int>{}); A<int> a{}; };

Möglicherweise erhalten Sie die folgende Fehlermeldung:

Fehler C2783: „void f(C<Types...>,B<U>)": Vorlagenargument für „U" konnte nicht abgeleitet werden.

Ursache

Die Ursache liegt darin, dass der C++-Compiler die Deklaration der Friend-Funktion nicht mit einer vorhandenen Deklaration abgleichen kann.

Auflösung

Dieses Update ist im Microsoft Download Center verfügbar.

Microsoft Download Center

Für weitere Informationen zum Herunterladen von Microsoft-Supportdateien klicken Sie auf die folgende Artikelnummer, um den Artikel in der Microsoft Knowledge Base anzuzeigen:

119591 So erhalten Sie Microsoft-Supportdateien von Onlinediensten

Microsoft hat diese Datei auf Viren überprüft. Microsoft verwendete die aktuellste Virenerkennungssoftware, die zum Zeitpunkt der Veröffentlichung der Datei verfügbar war. Die Datei wird auf Servern mit erhöhter Sicherheit gespeichert, die dazu beitragen, unbefugte Änderungen an der Datei zu verhindern.

Voraussetzungen

Für diesen Hotfix ist Visual Studio 2015 Update 3 erforderlich.

Informationen zum Neustart

Möglicherweise müssen Sie den Computer neu starten, nachdem Sie diesen Hotfix angewendet haben.

Informationen zum Ersatz

Dieser Hotfix ersetzt keine zuvor veröffentlichten Hotfixes.

Dateiinformationen

Die englische Version dieses Hotfixes verfügt über die Dateiattribute (oder spätere Dateiattribute), die in der folgenden Tabelle aufgeführt sind. Die Datums- und Uhrzeitangaben für diese Dateien werden in der koordinierten Weltzeit (UTC) angegeben. Wenn Sie die Dateiinformationen anzeigen, werden diese in die Ortszeit konvertiert. Um den Unterschied zwischen UTC und Ortszeit zu ermitteln, verwenden Sie die Registerkarte „Zeitzone" im Element „Datum und Uhrzeit" in der Systemsteuerung.

Dateiname

Dateiversion

Dateigröße

Datum

Zeit

Plattform

VC14-KB4096429.exe

14.0.24240

19.177.304

19.04.2018

02:32 Uhr

X86

Problemumgehung

Um dieses Problem zu umgehen, deklarieren Sie die variadic-Funktionsvorlage nicht als Freund einer Klassenvorlage.

No comments:

Post a Comment