Qual é a regra que permite que `this->` acesse membros de classes base dependentes?

Como sabemos, o código abaixo está mal formado porque o membrox está em uma classe base dependente. Entretanto, mudarx parathis->x na linha indicada corrigiria o erro.

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();
}

Eu gostaria de uma explicação de como esse comportamento é especificado no padrão. De acordo com [temp.dep] / 3:

Na definição de uma classe ou modelo de classe, se uma classe base depende de umparâmetro-modelo o escopo da classe base não é examinado durante a pesquisa de nome não qualificado no ponto de definição do modelo ou membro da classe ou durante uma instanciação do modelo ou membro da classe.

Isso parece explicar por que usarx sozinho falha. O nomex é pesquisado no ponto de definição e o escopo da classe base não é examinado. No entanto, e se usarmosthis->x? Agora o nomex é dependente e sua pesquisa é adiada até a instanciação. Mas o parágrafo citado parece implicar quex não deve ser encontradomesmo no momento da instanciação, desde a pesquisa dex nothis->x éainda não qualificado olho para cima.

Obviamente, as implementações não se comportam dessa maneira e é amplamente entendido que o escopo da classe baseé procurado uma vez que o modelo é instanciado.

Interpretei mal o parágrafo citado?Existe um parágrafo que especifique o comportamento "correto"?

questionAnswers(1)

yourAnswerToTheQuestion