Добавлены оба параметра переопределить спецификатор и окончательный спецификатор в С++ 11. Они отличаются от других спецификаторов, добавленных в С++ 11, таких как constexpr и decltype, поскольку они не являются ключевыми словами и поэтому доступны для использования в качестве идентификаторов:
int main()
{
int override = 0 ; // Ok
int final = 0 ; // Ok
//int constexpr = 0 ; // Error
}
Они называются идентификаторами со специальным значением, которые описаны в стандартном разделе проекта С++ 11 2.11
[lex.name] (выделено мной):
Идентификаторы в таблице 3 имеют особое значение при появлении в определенном контексте. Когда упоминается в грамматике, эти идентификаторы используются явно, а не используют идентификатор грамматическое производство. любая двусмысленность относительно того, имеет ли данный идентификатор особое значение разрешено интерпретировать токен как регулярный Идентификатор.
и Таблица 3 - Идентификаторы со списками специальных значений как переопределяющие, так и окончательные.
Почему эти два спецификатора оказались идентификаторами со специальным значением вместо ключевых слов?