I am learning about class in C++. I came to know that in certain situations the default constructor can be implicitly deleted. Also, i read that when we have a user defined constructor then the compiler will not automatically synthesize the default constructor.
To my current understanding, an implicitly deleted default constructor is quite different from the situation when the default constructor is not automatically synthesized. I mean in both cases we have the same effect, which is that we cannot create an object using default initialization. But still an implicitly deleted default constructor is not the same as compiler not synthesizing the default constructor.
But then i came across this answer which says:
when you explicitly declare any constructors, the default constructor is implicitly deleted.
(end of quote)
As i said, i don't think that when we have user defined constructors in our class then the default constructor is implicitly deleted. Instead the default constructor is not automatically synthesized by the compiler which is different(IMO) from being implicitly deleted. So the quoted answer seems technically wrong to me. And so the quoted answer should instead say that when we have user defined constructors then the compiler will not automatically synthesize the default ctor for us. But many people have upvoted(+marked it as correct) that answer so i may be missing something. Please correct me where i am wrong in my understanding of the topic and also tell me whether or not the quoted answer is technically correct.
My point is that "having an implicitly deleted default ctor" and "the compiler not synthesizing a default ctor due to the presence of user defined constructor" are 2 different things.