If you're not changing how const works, then this has limited utility in C++ because C++ const has all sorts of problems (e.g. not transitive). Also, what does the "mutable" annotation for a free function (i.e. main) mean? That just seems weird.
> - Lambda capture lists must be explicit (no [&] or [=], by themselves)
[&] is pretty valuable in cases where you do something like invokeSynchronously([&] {...})
I don't know that your changes will ever see much adoption because it won't be able to compile anything more complex than a "hello world" program as all the things you disallow are used & the porting effort is not cosmetic. Additionally, you're not actually fixing any of the problems people have with C++. So:
1. Consider fixing const semantics if you're going down the path of defining a new language
2. Think about how to fix memory safety and issues around UB which are the #1 sharp edges for C++
I don't know if you're achieving the goal of a safer, less error-prone language with the changes outlined. Have you looked at the things Carbon [1] is doing? I'd say that's an attempt to define a spiritual successor to C++, one that can easily interoperate with C++ but when you stay within the language it's safer.