There is an inconvenience in C++ where you have to mark everything as const. This is a remnant of the requirement to be compatible with C — C++ already proves a better model works, since lambdas default captured variables to const and require an explicit mutable keyword to opt out. Without the C compatibility constraint, this could be applied globally: drop the const keyword entirely, make everything immutable by default, and use mutable to opt into mutability.