Well, a possible reasoning on why it should be allowed to declare a non-const
instance in a class whose members are all const
is simply the fact that you can't write the following code:
class Foo { Foo(void) const; };
Which raises:
error: constructors may not be cv-qualified
And that means, at least one member -- the constructor, and surely the destructor -- will always be non-const
.