Подтвердить что ты не робот

Что наследует C1x от С++?

Хорошо известно, что оба С++ берут функции из C, но C также стандартизирует функции С++. C1x получил временные выражения полного выражения (ранее он имел только временные точки последовательности). C1x также взял от усилий по потоку С++ 11.

Интересно, какие другие функции C1x взяли у С++?

4b9b3361

Ответ 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) 

.. но я не уверен, что они были унаследованы прямо из С++.