C++ const and Immutability: An Empirical Study of Writes-Through-const
The ability to specify immutability in a programming language is a powerful tool for developers, enabling them to better understand and more safely transform the code without fearing side effects. Some mainstream languages, such as C and C++, allow developers to specify a form of immutability using the
const keyword. In this work, we characterize the meaning of the C/C++
const qualifier and present the ConstSanitizer tool, which dynamically identifies
const uses in practice that are either not consistent with transitive immutability, write to mutable fields, or write to formerly-
const objects whose
const-ness has been casted away. Based on a set of 8 benchmark programs, we classify such uses of
const according to a set of attributes (namely: synchronized, not visible, buffer/cache, delayed initialization, and incorrect). Our work contributes to the understanding of a widely-used C/C++ language feature.