Upon Lightness Races in Orbit's clarification, I've narrowed my post.
After reading this article: The Rule of Zero,
I came to understand the most, but I still want to solve some unclear issues that I have:
1. Looking at this phrase:
If the definition of a class X does not explicitly declare a move constructor, one will be implicitly declared as defaulted if and only if:
X does not have a user-declared copy constructor, and
X does not have a user-declared copy assignment operator,
X does not have a user-declared move assignment operator,
X does not have a user-declared destructor, and
The move constructor would not be implicitly defined as deleted.
Should all 5 statements coexist (share an "and" relation) or only some of them(share an "or" relation)?
2. What "user-declared" copy constructor\copy assignment operator... means?
is declaring it (any one of the list above) in an .h file but not implementing it considered user-declared?
is declaring it (any one of the list above) in an .h file and specify "=deleted" or "=default" considered user-declared?
is declaring it (any one of the list above) in an .h file with empty bracelets ,{}, considered user-declared?
Respectfully,
Etay