operator-> wird solange wiederholt, bis ein Wert vom Typ "Nicht-Klasse" zurückgegeben wird.

Gemäß 13.3.1.2 / 8, oder besser footnote-129 (Hervorhebung von mir):

[...] Der Vorgang wiederholt sich bis eine Operator-> Funktion gibt einen Wert eines Nichtklassentyps @ zurü.

Ich dachte ich wüsste wieoperator-> funktioniert (lassen Sie mich sagen, es ist rekursiv Weise basierend auf dem Rückgabetyp), aber ich sehe, dass ich überhaupt nicht weiß, wie estatsächlic works (ich meine, es istreturn type).

Als ich es gefunden habe, habe ich mich gefragt, ob man so etwas wie ein @ wirklich definieren und verwenden kandouble operator->() für eine generische StrukturS, weil ich so einen Operator noch nie benutzt habe.
etrachten Sie als Beispiel den folgenden Code:

struct S { 
    constexpr double operator->() noexcept {
        return 3.14;
    }
};

int main() {
    static_assert(3.14 == S{}.operator->(), "!");
}

Die Syntax ist ziemlich hässlich und ich kann keine Verwendung eines solchen Operators oder eines ähnlichen Operators erkennen.

Was ist der eigentliche Zweck, die Programmierer ein @ zurückgeben zu lassedouble oder einfloat von diesem Betreiber?
Was könnte eine mögliche Verwendung für sie sein?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage