What is the rule of five, and what does the compiler generate for you?
If a class needs a custom destructor, copy constructor or copy assignment, it almost certainly needs all of them plus the move constructor and move assignment — because it owns a resource. The compiler generates them implicitly, but declaring any of them suppresses some of the others: writing a destructor stops the move operations from being generated, and copies silently take their place. The rule of zero is better still — own resources through members that already manage themselves.