¿Cuál es la regla que permite a 'this->' acceder a miembros de clases base dependientes?

Como sabemos, el siguiente código está mal formado porque el miembrox está en una clase base dependiente. Sin embargo, cambiandox athis->x en la línea indicada corregiría el error.

template <typename T>
struct B {
    int x;
};
template <typename T>
struct C : B<T> {
    void f() {
        int y = x; // Error!
    }
};
int main() {
    C<int> c;
    c.f();
}

Me gustaría una explicación de cómo se especifica este comportamiento en el estándar. De acuerdo con [temp.dep] / 3:

En la definición de una clase o plantilla de clase, si una clase base depende de unparámetro de plantilla, el alcance de la clase base no se examina durante la búsqueda de nombre no calificado ni en el punto de definición de la plantilla o miembro de la clase ni durante una instanciación de la plantilla o miembro de la clase.

Esto parece explicar por qué usarx solo falla El nombrex se busca en el punto de definición y no se examina el alcance de la clase base. Sin embargo, ¿qué pasa si usamosthis->x? Ahora el nombrex es dependiente y su búsqueda se pospone hasta la creación de instancias. Pero el párrafo citado parece implicar quex no debe ser encontradoincluso en tiempo de instanciación, desde la búsqueda dex enthis->x estodavía incondicional buscar.

Obviamente, las implementaciones no se comportan de esta manera, y se entiende ampliamente que el alcance de la clase basees buscado una vez que se instancia la plantilla.

¿He malinterpretado el párrafo citado?¿Hay un párrafo que especifique el comportamiento "correcto"?

Respuestas a la pregunta(1)

Su respuesta a la pregunta