C ++ Verwenden eines Verweises auf die zu definierende Variable

Ist der folgende Code gemäß dem Standard (mit Abzinsung der ... s) in C ++ gültig?

bool f(T& r)
{
    if(...)
    {
        r = ...;
        return true;
    }
    return false;
}

T x = (f(x) ? x : T());

Es ist bekannt, in den von diesem Projekt verwendeten GCC-Versionen zu kompilieren (4.1.2 und 3.2.3 ... fangen Sie nicht mal an ...), abersollte es?

Bearbeiten: Ich habe einige Details hinzugefügt, zum Beispiel, wie f () im Originalcode konzeptionell aussieht. Grundsätzlich soll es initialisiert werdenx unter bestimmten Bedingungen.

Antworten auf die Frage(3)

Ihre Antwort auf die Frage