What this C++ special-member-function question tests
This is a medium-difficulty C++ language-knowledge question that probes your understanding of the compiler's rules for implicitly declared move constructors and move-assignment operators. It requires you to know the precise conditions under which the compiler will still auto-generate a move operation, even when you have explicitly defined another special member function.
The question rewards familiarity with C++11 and later standards, particularly the interaction between user-declared special members and implicit defaulting. To answer it correctly, you need to recall the specific rules about which declarations suppress move-operation synthesis and which do not—a distinction that trips up many candidates who have only surface-level familiarity with move semantics.
- Move constructor and move-assignment operator synthesis rules
- The relationship between user-declared destructors, copy operations, and move operations
- When implicit defaulting is suppressed versus when it persists