Warumdecltype abgezogen Ergebnis der in-Klasse definierte Funktion
struct MyStruct {
auto foo() { return 1; }
auto bar() { return foo(); }
};
Kompilierung, aber wenn, wie so einen Hinterrückgabetyp mit:
struct MyStruct {
auto foo() { return 1; }
auto bar() -> decltype(foo()) { return foo(); }
};
Kompilation nicht mit
error: function 'foo' with deduced return type cannot be used before it is defined
Ist das korrektes Verhalten bei den Implementierungen?
Ja. Die Memberfunktionskörper folgen logisch der Klassendefinition, selbst wenn sie inline definiert sind. –
Nun, wenn Sie einfache 'Auto'-Abzug auf den Rückgabetyp von' foo' verwenden können, warum nicht auch für 'bar' verwenden? – StoryTeller
Ich sehe den Punkt von 'declltype' nicht. Fehle ich etwas? Suchen Sie nach 'auto & foo() {return i; } auto bar() -> decltype (automatisch) {return foo(); } '? – ZDF