|
|
|
|
|
by unddoch
368 days ago
|
|
I guess it's better, but with C++ being C++, you will then need to decide if you consider struct A { A(const volatile& A); }; as a class with a const copy constructor. Maybe someone cares? Proper templated classes don't behave like this. If you manually define a copy constructor in a template class it has to work. And if it works only conditionally (like in many container classes) you need to add constraints on your constructors (>C++20) or derive from appropriately specialized base classes (e.g. std::_Optional_base in libstdc++). It sucks to tell users "you're holding it wrong", but I don't think there's a way to make it simpler without breaking everything written since C++11. |
|