In C++, if I have a class/struct with assignable elements, I would normally not provide an assignment operator. However, there is also the option to define it as default using C& operator=(C const&) = default; (in the header file).
Is there any difference between the two approaches, apart from the fact that explicit definition makes it possible to make the operator private or protected?
And is this the same for other elements that can be either omitted or set to default, such as (copy) constructors?