std::endl
ist eine Funktionsvorlage. Wenn es verwendet wird, müssen seine Template-Parameter vom Compiler explizit spezifiziert oder abgeleitet werden.
std::ostream
hat eine Überladung:
Wenn wir
verwenden %Vor% Der Compiler leitet die Typen ab, die für std::endl
verwendet werden sollen. Da Sie beim Aufruf von print
nicht auf die automatische Typableitung zurückgreifen können, müssen Sie explizit angeben, welche Version von std::endl
Sie verwenden möchten.
Folgendes sollte funktionieren:
%Vor%Aktualisieren
Ich habe den folgenden abgespeckten Code verwendet, um das Problem zu verfolgen:
%Vor% Ich denke, das liegt daran, dass die Vorlagentypabrechnung fehlschlägt, wenn Sie eine Funktionsvorlage übergeben. Es kann nicht die Parameter für die Instanziierung von endl
mit abgeleitet werden.
Beachten Sie, dass die Definition von endl
lautet:
Einfacheres Beispiel:
%Vor%Ihre Fehlermeldungen kommen zustande, weil es verschiedene Möglichkeiten gibt, Ihren Funktionsaufruf dem Parameter-Paket zuzuordnen, aber keiner von ihnen hat funktioniert.
Tags und Links c++ c++11 iostream compiler-errors variadic-templates