-
Notifications
You must be signed in to change notification settings - Fork 72
Open
@fjatWbyT
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> class resource_manager { public: resource_manager() = default; ~resource_manager() = default; resource_manager(resource_manager const&) = delete; resource_manager(resource_manager&&) = default; resource_manager& operator=(resource_manager const&) = 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_; }; int main() {}
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 with cpp/misra/src/rules/DIR-15-8-1/CopyAndMoveAssignmentsShallHandleSelfAssignment.ql.