It's possible that someone has already asked about this but googling for "default", "defaulted", "explicit" and so on doesn't give good results. But anyway.
I already know there are some differences between an explicitly defined default construtor (i.e. without arguments) and an explicitly defined defaulted constructor (i.e. with the keyword default), from here: The new keyword =default in C++11
But what are the differences between an explicitly defined defaulted constructor and implicitly defined one (i.e. when the user doesn't write it at all)?
class A { public: A() = default; // other stuff }; vs
class A { // other stuff }; One thing that comes to mind is that when there is a non-default constructor then the user also has to define a default constructor explicitly. But are there any other differences?
Edit: I'm mostly interested in knowing if there's any good reason to write A() = default; instead of just omitting the constructor altogether (assuming it's the only explicitly defined constructor for the class, of course).