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