Что наследует C1x от С++?
Хорошо известно, что оба С++ берут функции из C, но C также стандартизирует функции С++. C1x получил временные выражения полного выражения (ранее он имел только временные точки последовательности). C1x также взял от усилий по потоку С++ 11.
Интересно, какие другие функции C1x взяли у С++?
Ответы
Ответ 1
Часть резьбы C1x (5.1.2.4) берется почти буквально из С++ 11. Такие термины, как "конфликт" и "атомные операции", имеют одинаковые определения для всех практических целей.
Выравнивание также вдохновлено С++ 11: ключевым словом является alignof
, а максимальный выровненный тип - max_align_t
(исключая пространство имен std::
, конечно).
Ответ 2
Некоторые сходства включают в себя:
- статические утверждения:
_Static_assert ( constant-expression , string-literal );
- атомная поддержка
- поддержка unicode - добавляет некоторые typedefs (например,
char16_t
= uint_least16_t
), литералы и утилиты.
-
_Generic
_Generic
действительно больше похож на перегрузку, чем то, что у нас есть с мощью шаблонов. Вездесущим примером _Generic
является:
#define cbrt(X) _Generic((X), long double: cbrtl, \
default: cbrt, \
float: cbrtf)(X)
.. но я не уверен, что они были унаследованы прямо из С++.