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

Anthony Sharp <anthonysharp15 at gmail dot com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |anthonysharp15 at gmail dot com

--- Comment #8 from Anthony Sharp <anthonysharp15 at gmail dot com> ---
This issue was mentioned in pr17314 and Jason got verification from the C++
standards committee that it was expected behaviour that inaccessible virtual
constructors (or whatever one calls it - I'm not too clued up on the lingo)
should not work (see https://gcc.gnu.org/bugzilla/show_bug.cgi?id=17314).

As Jason says, a class with a virtual private base can't be derived from
(http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_closed.html#7).

In fact, it seems that it is even the case that a public virtual base can't be
derived from (see pr17314 discussion - especially comment 17).

The latest version of the Visual Studio compiler gives the following warnings
when you attempt to derive from a private OR a public virtual base:

warning C4594: class 'cclass' can never be instantiated - indirect virtual base
class 'aclass' is inaccessible
message : 'aclass' is a private base class of 'bclass'
warning C4624: 'cclass': destructor was implicitly defined as deleted

GCC should generate a warning for this.

Reply via email to