C1x从C ++继承了什么?

时间:2011-12-06 08:49:35

标签: c++ c c11

众所周知,C ++都采用C语言的特性,但C语言也标准化了C ++特性。 C1x已经获得了完整的表达临时表(之前它只有序列点临时表)。 C1x也从C ++ 11线程工作中获益。

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

2 个答案:

答案 0 :(得分:8)

一些相似之处包括:

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

_Generic实际上更像是重载,而不是我们对模板的强大功能。无处不在的_Generic示例是:

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

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

答案 1 :(得分:6)

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

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