# Extra Clang Tools 21.1.8 documentation

## clang-tidy - cppcoreguidelines-pro-type-const-cast

# cppcoreguidelines-pro-type-const-cast

Imposes limitations on the use of `const_cast` within C++ code. It depends on the `StrictMode` option setting to determine whether it should flag all instances of `const_cast` or only those that remove either `const` or `volatile` qualifier.

Modifying a variable that has been declared as `const` in C++ is generally considered undefined behavior, and this remains true even when using `const_cast`. In C++, the `const` qualifier indicates that a variable is intended to be read-only, and the compiler enforces this by disallowing any attempts to change the value of that variable.

Removing the `volatile` qualifier in C++ can have serious consequences. This qualifier indicates that a variable’s value can change unpredictably, and removing it may lead to undefined behavior, optimization problems, and debugging challenges. It’s essential to retain the `volatile` qualifier in situations where the variable’s volatility is a crucial aspect of program correctness and reliability.

This rule is part of the Type safety (Type 3) profile and ES.50: Don’t cast away const rule from the C++ Core Guidelines.

## Options

StrictMode

  When this setting is set to true, it means that any usage of `const_cast` is not allowed. On the other hand, when it’s set to false, it permits casting to `const` or `volatile` types. Default value is false.