AUTOSAR C++14 Rule A5-2-3
A cast shall not remove any const or volatile qualification from the type of a pointer or reference
Description
A cast shall not remove any const or volatile qualification from the type of a pointer or reference.
Rationale
Removing the const or volatile qualification from
a pointer or reference might be unexpected. Consider this
code:
void foo(const char* p){
*const_cast< char * >( p ) = '\0';
}foo() accepts a const pointer to a
char. The caller of this functions expects that the parameter
p remains unchanged. Modifying p in
foo() by converting it to a non-const pointer is
unexpected. If *p dereferences to a const character,
this modification might lead to unexpected behavior. Avoid casting the
const or volatile away from a pointer or
reference.Polyspace Implementation
Polyspace® raises a violation of this rule if you remove the const or
volatile qualification from the type of a pointer or a reference by:
Casting one pointer to another pointers
Casting to a reference
.
Troubleshooting
If you expect a rule violation but Polyspace does not report it, see Diagnose Why Coding Standard Violations Do Not Appear as Expected.
Examples
Check Information
| Group: Expressions |
| Category: Required, Automated |
PQL Name: std.autosar_cpp14.A5_2_3 |