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

            Bug ID: 98515
           Summary: Possible regression causing "is protected within this
                    context" error
           Product: gcc
           Version: 11.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: belegdol at gmail dot com
  Target Milestone: ---

mame-0.227 has failed to compile with gcc-11 in Fedora 34 [1]
(gcc-11.0.0-0.11.fc34). mame developers have kindly provided a minimal test
case. This fails with gcc-11 but works on 

class A {
public:
    A() = default;

protected:
    int var0 = 0;
};

template<int a> class B : public A {
public:
    using A::A;
};

template<int a, int b> class C : public B<a> {
public:
    using B<a>::B;

    void g();
};

template<int a, int b> void C<a, b>::g()
{
    A::var0++;
}

template class C<0, 0>;

While this works:

class A {
public:
    A() = default;

protected:
    int var0 = 0;
};

template<int a> class B : public A {
public:
    using A::A;
};

template<int a, int b> class C : public B<a> {
public:
    using B<a>::B;

    void g() { A::var0++; }
};

template class C<0, 0>;

[1] https://github.com/mamedev/mame/issues/7616

Reply via email to