I saw that three classes do similar things:
CounterPtrOrPtr
CountedConstPtrOrConstPtr
OwningOrAliasingPtr
They use a bool to let the user decide whether the object must own the data or just alias the data.
Maybe we can refactor the code with one class templated by a smart pointer (either a CowPtr, or a CounterPtr or any other smart pointers that own the data).
By the way, I think that we should write CPointer and CSmartPointers concepts.
I saw that three classes do similar things: CounterPtrOrPtr CountedConstPtrOrConstPtr OwningOrAliasingPtr They use a bool to let the user decide whether the object must own the data or just alias the data.
Maybe we can refactor the code with one class templated by a smart pointer (either a CowPtr, or a CounterPtr or any other smart pointers that own the data).
By the way, I think that we should write CPointer and CSmartPointers concepts.