- Notifications
You must be signed in to change notification settings - Fork67
Open
Description
Affected rules
DIR-15-8-1
Description
Using the "move-and-swap idiom" proposed in the directive's example as a solution to address potential issues with self-assignment leads to an alert.
Example
#include<utility>classresource_manager {public:resource_manager() =default;~resource_manager() =default;resource_manager(resource_managerconst&) =delete;resource_manager(resource_manager&&) =default; resource_manager&operator=(resource_managerconst&) =delete; resource_manager&operator=(resource_manager&& other) &noexcept { resource_manager temp{std::move(other)};std::swap(resource_, temp.resource_);return *this; }private:using resource =int; resource resource_;};intmain() {}
I am getting a
"DIR-15-8-1: User-provided copy assignment operators and move assignment operators shall handle self-assignment","User-provided copy assignment operators and move assignment operators shall handle self-assignment.","error","User defined copy or user defined move does not handle self-assignment correctly.","/main.cpp","10","23","10","31"
when analyzing withcpp/misra/src/rules/DIR-15-8-1/CopyAndMoveAssignmentsShallHandleSelfAssignment.ql
.