Hacker News new | ask | show | jobs
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.

1 comments

The extra qualification doesn't prevent it from taking const objects, so ...