https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66256

David Stone <david at doublewise dot net> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |david at doublewise dot net

--- Comment #8 from David Stone <david at doublewise dot net> ---
I do not believe that gcc is correct to reject this code. Consider

http://eel.is/c++draft/basic.scope.class#1

"The potential scope of a name declared in a class consists not only of the
declarative region following the name's point of declaration, but also of all
function bodies, default arguments, noexcept-specifiers, and
brace-or-equal-initializers of non-static data members in that class (including
such things in nested classes)."

That seems to state that this variable is in scope and thus this code should be
allowed.

As a second test case, this should also be accepted (same code, but with e put
in an unevaluated context instead of being static):


struct test
{
        test() noexcept(noexcept(e)) {}
        const bool e = false;
};

int main() {}




And also



struct test
{
        test() noexcept(noexcept(e())) {}
        const bool e() { return false; }
};

int main() {}

Reply via email to