29 lines
1.3 KiB
ReStructuredText
29 lines
1.3 KiB
ReStructuredText
|
.. title:: clang-tidy - cert-dcl21-cpp
|
||
|
|
||
|
cert-dcl21-cpp
|
||
|
==============
|
||
|
|
||
|
.. note::
|
||
|
This check is deprecated since it's no longer part of the CERT standard.
|
||
|
It will be removed in :program:`clang-tidy` version 19.
|
||
|
|
||
|
This check flags postfix ``operator++`` and ``operator--`` declarations
|
||
|
if the return type is not a const object. This also warns if the return type
|
||
|
is a reference type.
|
||
|
|
||
|
The object returned by a postfix increment or decrement operator is supposed
|
||
|
to be a snapshot of the object's value prior to modification. With such an
|
||
|
implementation, any modifications made to the resulting object from calling
|
||
|
operator++(int) would be modifying a temporary object. Thus, such an
|
||
|
implementation of a postfix increment or decrement operator should instead
|
||
|
return a const object, prohibiting accidental mutation of a temporary object.
|
||
|
Similarly, it is unexpected for the postfix operator to return a reference to
|
||
|
its previous state, and any subsequent modifications would be operating on a
|
||
|
stale object.
|
||
|
|
||
|
This check corresponds to the CERT C++ Coding Standard recommendation
|
||
|
DCL21-CPP. Overloaded postfix increment and decrement operators should return a
|
||
|
const object. However, all of the CERT recommendations have been removed from
|
||
|
public view, and so their justification for the behavior of this check requires
|
||
|
an account on their wiki to view.
|