Isso é permitido dentro de uma especificação noexcep

Tenho algum código que exija que eu use*this, mas quero que não seja amigável:

struct foo;

// Would actually be something with conditional noexcept
void do_something(foo&);

struct foo {
    void fn()
        noexcept(noexcept(::do_something(*this)))
    {
        ::do_something(*this);
    }
};

Contudo,gcc rejeita isso:

<source>:7:43: error: invalid use of 'this' at top level
         noexcept(noexcept(::do_something(*this)))

Se eu apenas acessar um membro, o gcc é bom:

void do_something(int);

struct bar {
    int x;

    void fn()
        noexcept(noexcept(::do_something(x)))
    {
        ::do_something(x);
    }
};

No entanto, se eu acessar o membro através dothis ponteiro,gcc reclama novamente:

struct baz {
    int x;

    void fn()
        noexcept(noexcept(::do_something(this->x)))
    {
        ::do_something(this->x);
    }
};

Diagnóstico

<source>:7:42: error: invalid use of 'this' at top level
         noexcept(noexcept(::do_something(this->x)))

Todo outro compilador que tentei aceita usandothis dentro da especificação noexcept, mas na verdade não sei se é o gcc que possui o bug ou todos os outros compiladore

Pode a palavra-chavethis ser usado dentro de uma especificação noexcep

questionAnswers(1)

yourAnswerToTheQuestion