I have some code which requires me to use *this
, but I want it to be noexcept friendly:
struct foo;
// Would actually be something with conditi
Yes, it is allowed. [expr.prim.this]p2 says:
If a declaration declares a member function or member function template of a class
X
, the expressionthis
is a prvalue of type “pointer to cv-qualifier-seqX
” between the optional cv-qualifier-seq and the end of the function-definition, [...].
The cv-qualifier-seq refers to the cv qualifiers of the member function, which appear before the noexcept specifier:
parameters-and-qualifiers: ( parameter-declaration-clause ) cv-qualifier-seq[opt] ref-qualifier[opt] noexcept-specifier[opt] attribute-specifier-seq[opt]
So, this
is a valid expression to use in the noexcept-specifier. This was a DR (cwg1207), which gcc doesn't implement. The bug report.