17

众所周知,C++ 都继承了 C 的特性,但 C 也标准化了 C++ 的特性。C1x 获得了完整的表达临时性(以前它只有序列点临时性)。C1x 也借鉴了 C++11 线程工作。

我想知道 C1x 从 C++ 中获得了哪些其他功能?

4

2 回答 2

8

一些相似之处包括:

  • 静态断言:_Static_assert ( constant-expression , string-literal );
  • 原子支持
  • unicode 支持 - 添加一些类型定义(例如char16_t= uint_least16_t)、文字和实用程序。
  • _Generic

_Generic真的更像是重载,而不是我们拥有的模板的力量。普遍存在的例子_Generic是:

#define cbrt(X) _Generic((X), long double: cbrtl, \
                              default: cbrt, \
                              float: cbrtf)(X) 

..但我不确定哪些是从 C++ 明确继承的。

于 2011-12-06T08:52:34.367 回答
6

C1x (5.1.2.4) 的线程部分几乎完全取自 C++11。出于所有实际目的,诸如“冲突”“原子操作”之类的术语具有相同的定义。

对齐也受到 C++11 的启发:关键字是alignof,最大对齐类型是max_align_t(当然,删除std::命名空间)。

于 2011-12-06T09:41:03.767 回答