- Notifications
You must be signed in to change notification settings - Fork 70
Open
Labels
Difficulty-MediumA false positive or false negative report which is expected to take 1-5 days effort to addressA false positive or false negative report which is expected to take 1-5 days effort to addressImpact-Mediumfalse positive/false negativeAn issue related to observed false positives or false negatives.An issue related to observed false positives or false negatives.
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_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_}; 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 with cpp/misra/src/rules/DIR-15-8-1/CopyAndMoveAssignmentsShallHandleSelfAssignment.ql.
Metadata
Metadata
Assignees
Labels
Difficulty-MediumA false positive or false negative report which is expected to take 1-5 days effort to addressA false positive or false negative report which is expected to take 1-5 days effort to addressImpact-Mediumfalse positive/false negativeAn issue related to observed false positives or false negatives.An issue related to observed false positives or false negatives.