http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60894

            Bug ID: 60894
           Summary: Use of redundant struct keyword in virtual function
                    prototype combined with using statement causes
                    compilation error
           Product: gcc
           Version: 4.8.1
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: loose at astron dot nl

The code below causes a compilation error:
t.cc:15:6: error: prototype for ‘void D::doIt(B::S&)’ does not match any in
class ‘D’

class B
{
protected:
  struct S {};
  virtual void doIt(struct S& s) = 0;
};

class D : public B
{
public:
  using B::S;
  virtual void doIt(struct S& s);
};

void D::doIt(struct S& s)
{
  (void)s;
}

This code compiles fine if I remove the redundant struct keyword in the virtual
function prototype. It also compiles fine if I remove the using declaration. It
seems as if the compiler thinks I'm forward declaring another struct S inside
the declaration of D::doIt().

Reply via email to