I think you are misunderstanding Vindieselwalker. I think he's talking about identifiers like
override and
final that has special meaning in certain contexts but is otherwise free to use as an identifier for your variables, functions, namespaces, etc.
-------------------------------------------------------------------------------------------------------------------------------------------
To me it seems like "identifiers with special meaning" are just a way to be able to use names that can't be made keywords because it would break too much existing code. In the case of
delete I don't even think it would be possible (unless you use some very complicated rules that makes it only available as a normal identifier under certain conditions) because
delete ptr; could then mean both
delete the object that ptr points to and
a variable of type delete named ptr.
I think the problem of making new keywords are shown by the current discussion around the coroutine keywords
co_await,
co_yield and
co_return, that are planned for C++20. A lot of people don't seem to like the co_ prefix of these keywords. You might find it interesting reading a proposal to allow
yield,
await and
return to be used a inside coroutines if it's marked with
async, without making them proper keywords.
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1485r0.html