Problembeschreibung
Beim Deklarieren einer Funktionsvorlage Variadic als Friend der Klassenvorlage zurück der C++-Compiler eine Fehlermeldung statt den Code. Beispielsweise, wenn Sie die folgende Deklaration ausfü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{};
};
Sie erhalten die folgende Fehlermeldung angezeigt:
Fehler C2783: 'Void f (C < Typen... >, < U > B)': Vorlagenargument für 'U' konnte nicht hergeleitet werden
Ursache
Die Ursache ist, dass der C++-Compiler die Deklaration der Friend-Funktion mit vorhandener Deklaration zugeordnet werden kann.
Problemlösung
Dieses Update steht im Microsoft Download Centerzur Verfügung.
Microsoft Download Center
Für weitere Informationen darüber, wie Sie Microsoft Support-Dateien herunterladen können, klicken Sie auf die folgende Artikelnummer, um den Artikel in der Microsoft Knowledge Base anzuzeigen:
119591 So erhalten Sie Microsoft Support-Dateien von Online-Diensten
Microsoft hat diese Datei auf Viren überprüft. Microsoft hat die zum Zeitpunkt der Veröffentlichung der Datei aktuell verfügbare Virenerkennungssoftware verwendet. Die Datei wird auf Servern mit erhöhter Sicherheit gespeichert, wodurch nicht autorisierten Änderungen an der Datei vorgebeugt wird.
Voraussetzungen
Dieser Hotfix erfordert Visual Studio 2015 Update 3.
Informationen zum Neustart
Sie müssen den Computer neu starten, nachdem Sie diesen Hotfix angewendet haben.
Ersetzte
Dieser Hotfix ersetzt keinen zuvor veröffentlichten Hotfix.
Dateiinformationen
Die englische Version dieses Hotfixes weist Dateiattribute (oder spätere Attribute), die in der folgenden Tabelle aufgelistet sind. Die Datums- und Uhrzeitangaben für diese Dateien sind in Coordinated Universal Time (UTC) aufgelistet. Wenn Sie die Dateiinformationen anzeigen, werden sie in die lokale Zeit konvertiert. Um die Differenz zwischen UTC und der Ortszeit zu finden, verwenden Sie die Registerkarte Zeitzone unter Datum und Uhrzeit in der Systemsteuerung.
Dateiname |
Dateiversion |
Dateigröße |
Datum |
Zeit |
Plattform |
VC14-KB4096429.exe |
14.0.24240 |
19,177,304 |
04/19/2018 |
32 UHR |
X86 |
PROBLEMUMGEHUNG
Um dieses Problem zu umgehen, die Variadic Funktion Vorlage als Friend der Klassenvorlagenicht deklarieren .