C ++ Usando uma referência à variável que está sendo definida

O código a seguir é válido em C ++, de acordo com o padrão (descontando os ... s)?

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

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

Sabe-se que ele compila nas versões do GCC que este projeto usa (4.1.2 e 3.2.3 ... nem me inicie ...), masdevemos isto?

Editar: Adicionei alguns detalhes, por exemplo, sobre como f () conceitualmente se parece no código original. Basicamente, é para ser inicializadox em certas condições.

questionAnswers(3)

yourAnswerToTheQuestion