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

            Bug ID: 97890
           Summary: Abstract virtual classes suddenly allowed as parameter
                    types ?
           Product: gcc
           Version: unknown
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: dcb314 at hotmail dot com
  Target Milestone: ---

For this wrong C++ code:

struct S        // abstract
{
        int b;

        virtual void f() = 0;
};

extern void g( struct S);

Suddenly seems to have started working sometime between 20201114
and 20201116.

/home/dcb/gcc/results.20201114/bin/gcc
nov18b.cc:9:24: error: cannot declare parameter to be of abstract type ‘S’
    9 | extern void g( struct S);
      |                        ^
nov18b.cc:2:8: note:   because the following virtual functions are pure within
‘S’:
    2 | struct S        // abstract
      |        ^
nov18b.cc:6:22: note:     ‘virtual void S::f()’
    6 |         virtual void f() = 0;
      |                      ^
/home/dcb/gcc/results.20201116.valgrind/bin/gcc

Compiler dated 20201104 has git hash 8270a7238ba1b535
and compiler dated 20201116 has git hash 2f473f4b065d3cc0.

Accident or design ?

Reply via email to