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

Martin Sebor <msebor at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
   Last reconfirmed|                            |2016-05-19
                 CC|                            |msebor at gcc dot gnu.org
     Ever confirmed|0                           |1
      Known to fail|                            |4.9.3, 5.3.0, 6.1.0, 7.0

--- Comment #1 from Martin Sebor <msebor at gcc dot gnu.org> ---
Confirmed with today's trunk (7.0) and prior released versions.  Clang ineeds
accepts it, EDG 4.10 does not.

$ cat u.cpp && /build/gcc-trunk-svn/gcc/xgcc -B /build/gcc-trunk-svn/gcc -S
-Wall -Wextra -Wpedantic u.cpp
struct A {
  A(const int i, const int j) {};
};

struct B1 : virtual public A {
  virtual void moo()=0;
  B1() {};   // (1) Look! not "B1() : A(5,6) {};"
};

struct B2 : virtual public A {
  virtual void cow()=0;
  B2() {};   // (2) Look! not "B2() : A(7,8) {};"
};

struct C : public B1, public B2 {
  C() : A(2,3) {};
  void moo() {};
  void cow() {};
};

int main() {
  C c;
  return 0;
};

u.cpp: In constructor ‘A::A(int, int)’:
u.cpp:2:15: warning: unused parameter ‘i’ [-Wunused-parameter]
   A(const int i, const int j) {};
               ^
u.cpp:2:28: warning: unused parameter ‘j’ [-Wunused-parameter]
   A(const int i, const int j) {};
                            ^
u.cpp: In constructor ‘B1::B1()’:
u.cpp:7:8: error: no matching function for call to ‘A::A()’
   B1() {};   // (1) Look! not "B1() : A(5,6) {};"
        ^
u.cpp:2:3: note: candidate: A::A(int, int)
   A(const int i, const int j) {};
   ^
u.cpp:2:3: note:   candidate expects 2 arguments, 0 provided
u.cpp:1:8: note: candidate: constexpr A::A(const A&)
 struct A {
        ^
u.cpp:1:8: note:   candidate expects 1 argument, 0 provided
u.cpp:1:8: note: candidate: constexpr A::A(A&&)
u.cpp:1:8: note:   candidate expects 1 argument, 0 provided
u.cpp: In constructor ‘B2::B2()’:
u.cpp:12:8: error: no matching function for call to ‘A::A()’
   B2() {};   // (2) Look! not "B2() : A(7,8) {};"
        ^
u.cpp:2:3: note: candidate: A::A(int, int)
   A(const int i, const int j) {};
   ^
u.cpp:2:3: note:   candidate expects 2 arguments, 0 provided
u.cpp:1:8: note: candidate: constexpr A::A(const A&)
 struct A {
        ^
u.cpp:1:8: note:   candidate expects 1 argument, 0 provided
u.cpp:1:8: note: candidate: constexpr A::A(A&&)
u.cpp:1:8: note:   candidate expects 1 argument, 0 provided
u.cpp: At global scope:
u.cpp:24:2: warning: extra ‘;’ [-Wpedantic]
 };
  ^

Reply via email to