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

            Bug ID: 91697
           Summary: Cannot use this in noexcept specifier
           Product: gcc
           Version: 8.3.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: gccbugbjorn at fahller dot se
  Target Milestone: ---

This C++11 code compiles with g++ 9.1, but fails with g++ versions 8, 7, 6, 5,
4.9, 4.8, and 4.7.

template <typename T>
void f(const T&) noexcept;

struct S
{
    auto fr() const -> decltype(f(*this));
    void fe() const noexcept(noexcept(f(*this)));
};


The compilation error is on the use of 'this' in the noexcept specifier for
S::fe().

The message is:
t.cpp:7:42: error: invalid use of 'this' at top level

     void fe() const noexcept(noexcept(f(*this)));

                                          ^~~~
https://godbolt.org/z/NvNMZC

It looks similar to bug 91141, except this one does compile with g++-9.

Reply via email to