The C++ programming language is a multiparadigm language, with a rich set of procedural,
object-oriented, generative and, since C++11, functional language elements. The language
is also well-known for its capability to map certain semantic features into the language
syntax; therefore, the compiler can reason about them at compile time. Supporting
functional programming with immutables is one of such aspects: the programmer can
mark immutable components and the compiler checks potential violation scenarios and
also optimizes the code according to the constant expectations.