Jonathan Wakely wrote:

> This is DR906
> http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_active.html#906

Thanks.

> Note "it shall be public"

And what's the reason for such restrictions?
I've used the following construction as a very
useful idiom to create an abstract class:

    class Base {

    protected:

        Base() = default;
        virtual ~Base() = default;
    };

    class Derived : public Base {

    public:

        Derived() { ... }
        virtual ~Derived()  { ... }
    };

Clean, simple and GCC used to happily accept that.
But now it is illegal because of 3 draft violations:

Base() shall be public, but is not
~Base() shall be public, but is not
~Base() shall not be virtual, but it is

IMHO this severely cripples defaulted functions,
making them almost useless -- the set of allowed
cases is too narrow. Is there any chance to fix the DR?

Best regards
Piotr Wyderski

Reply via email to