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

--- Comment #6 from David Krauss <potswa at mac dot com> ---
Created attachment 34541
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=34541&action=edit
Fix: disable the error for friend declarators.

The fix is simple. Tested and submitted for approval. (I am a registered
contributor.)

I don't suppose this warrants a testcase file. If you want to exercise the
compiler, here is a more interesting case:


template< typename k >
struct t {
    friend auto leak( t );

    template< typename v >
    struct m {
        friend auto leak( t ) { return v{}; }
    };
};

int main() {
    t< int >::m< char > a;
    decltype( leak( t< int >{} ) ) b;
    static_assert ( sizeof b == 1, "" );

    t< int >::m< short > c; // error: redefinition of ‘auto leak(t<int>)’
}

Reply via email to