Sometimes the initialization of a const value is complex and needs some extra code: int value{default_value}; // initialize some defaults if (checkSomeSophisticatedConditions) { value = 8; } // use value DoSomething(value); // Since the value is determined at runtime, the only way to keep it unchanged is to write a function or to use another variable like this: const int const_value {value}; value = 10;// This is valid But actually in the business code the value should be const and the application should not change it’s value.