C ++标准委员会倾向于回避向该语言添加新的关键字,但是对于C ++ 11而言并非如此。一些例子:
constexpr
decltype
thread_local
auto // New usage
noexcept
nullptr
static_assert
alignof
alignas
C ++ 14引入了新的关键字吗?
C ++标准委员会倾向于回避向该语言添加新的关键字,但是对于C ++ 11而言并非如此。一些例子:
constexpr
decltype
thread_local
auto // New usage
noexcept
nullptr
static_assert
alignof
alignas
C ++ 14引入了新的关键字吗?
Answers:
N3936(C ++ 14)中的表4(关键字):
alignas continue friend register true
alignof decltype goto reinterpret_cast try
asm default if return typedef
auto delete inline short typeid
bool do int signed typename
break double long sizeof union
case dynamic_cast mutable static unsigned
catch else namespace static_assert using
char enum new static_cast virtual
char16_t explicit noexcept struct void
char32_t export nullptr switch volatile
class extern operator template wchar_t
const false private this while
constexpr float protected thread_local
const_cast for public throw
N3337(C ++ 11)中的表4:
alignas continue friend register true
alignof decltype goto reinterpret_cast try
asm default if return typedef
auto delete inline short typeid
bool do int signed typename
break double long sizeof union
case dynamic_cast mutable static unsigned
catch else namespace static_assert using
char enum new static_cast virtual
char16_t explicit noexcept struct void
char32_t export nullptr switch volatile
class extern operator template wchar_t
const false private this while
constexpr float protected thread_local
const_cast for public throw
...这是一个漫长的说“不”的方式。
(override
和final
是“具有特殊含义的标识符”,并在表3中列出;and
等是“对于某些运算符和标点符的替代表示...”,并在表5中列出。在C ++ 11和C ++之间都未更改任何表14.)
register
关键字还是有用的或新的C ++代码11使用?
C ++ 14不会添加任何新关键字。这并不奇怪,因为C ++ 14旨在作为对C ++ 11的小升级,主要涉及清理bug和进行小的,低影响的改进。下一个主要变化可能是C ++'17',我希望新的关键字再次出现。
C ++标准委员会倾向于回避向该语言添加新的关键字,但是对于C ++ 11而言并非如此。
我认为值得考虑的是,委员会为何回避添加新的关键字(巧合的是,为什么您错误地将其包括auto
在列表中)。新关键字的主要问题是在C ++中,您不能使用关键字作为标识符,这意味着添加新关键字会破坏现有代码。再利用auto
,那么,不打破他们的规则,因为没有现成的代码可以使用auto
作为标识符反正。
因此,为了接受新关键字,需要有充分的理由证明其与现有代码潜在冲突的代价,并且如果没有新关键字,则没有明智的方式来实现同一件事。就C ++ 11而言,委员会接受了一些要求使用新关键字的提议,因为他们认为收益大于成本,并不是因为他们不喜欢添加新关键字。
这也是为什么,如果您查看给出的列表,每个输入都是复合关键字的原因,因为这样可以减少它们与现有标识符冲突的可能性。