OK, I admit I wasn't thinking about things from a DBC perspective, and misunderstood "DBC" to be a reference to some database module. I here am new and I didn't have context. My bad.
But if we're talking design-by-contract, I don't see how "Array is Array::Const" can work, either, since I consider the inability to modify the elements of a constant array an explicit part of its contract. Therefore, if we're supporting DBC, I would say that Array and Array::Const should not have an is-a relationship at all, but should be sibling classes, inheriting from an abstract sequence-type parent class whose definition makes no statements one way or the other about modifications to elements.