Understand special member function generation