C++ 11 eingeführt, um eine Notation für nachlauf return Typen: Wenn eine Funktionsdeklaration mit auto
eingeführt wird, wird der Rückgabetyp nach den Parametern und eine ->
Sequenz angegeben werden. Das heißt, es genügt, main()
zu deklarieren, um int
zurückzugeben.
Die Bedeutung der abschließenden Rückgabetypen ist hauptsächlich für Funktionsschablonen, wo es jetzt möglich ist, Parameter für die Funktion zusammen mit decltype()
zu verwenden, um den Rückgabetyp zu bestimmen.Zum Beispiel:
template <typename M, typename N>
auto multiply(M const& m, N const& n) -> decltype(m * n);
Dies erklärt die Funktion multiply()
die Art von m * n
erzeugt zurückzukehren. Die Verwendung von decltype()
vor multiply()
wäre ungültig, da m
und n
noch nicht deklariert sind.
Obwohl es hauptsächlich für Funktionsschablonen nützlich ist, kann die gleiche Notation auch für andere Funktionen verwendet werden. Mit C++ 14 kann der Trailing-Rückgabetyp sogar weggelassen werden, wenn die Funktion unter bestimmten Bedingungen mit auto
eingeführt wird.
und was ist der Vorteil, Main so zu deklarieren? –
@PaperBirdMaster: Ich behaupte nicht, dass es einen Vorteil gibt. Es ist jedoch erlaubt und nicht schlechter als die Alternative. –
Entschuldigung für das Missverständnis, ich sage nicht, dass Sie sagen, dass es einen Vorteil für den Trailing-Return-Typ (TRT) auf 'main' gibt, ich frage nur (und frage mich), ob es einen Vorteil bei dieser Verwendung des TRT gibt in diesem Zusammenhang ... Ich denke, dass einschließlich dieser Erklärung (falls vorhanden) wäre schön, die Antwort zu verbessern –