Main Content
MISRA C++:2008 Rule 5-2-5
A cast shall not remove any const or volatile qualification from the type of a pointer or reference
Description
Rule Definition
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_t * >( 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
using a casting operation.
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 |
Version History
Introduced in R2013b