C++17 основан на C17?
Я заметил, что многие из новых функций в C++17 были из C17. Есть ли связь между этими двумя стандартами? Есть ли практические различия между функциями C и их эквивалентами в C++?
2 ответа
C++17 основан на C17?
Нет.
Нормативной ссылкой на C++ на текущий рабочий проект является C11.
Если сейчас это C11, то это было самое позднее C11 для C++17.
Вот соответствующее предложение (хотя я не уверен, что именно это предложение было принято).
Я заметил, что многие из новых функций в C++17 были из C17.
У меня нет Я не сравнивал два. Если аналогичные функции были добавлены к обоим, это, вероятно, совпадение. Тем не менее, поскольку C17 действительно было "исправлением ошибки", обновление до C11 кажется маловероятным.
Есть ли связь между этими двумя стандартами?
Не на самом деле нет. Конечно, две рабочие группы будут общаться друг с другом, но оба языка независимы.
Есть ли практические различия между функциями C и их эквивалентами в C++?
Без конкретных примеров я не могу сказать, но опять же вы должны рассматривать их как отдельные и независимые вещи.
C++ только "основан на" C с точки зрения библиотечных и языковых возможностей, которые он "наследует". Однако обратите внимание, что это не оптовый импорт C11 в C++17; это не так, как это работает.
Кстати, хотя термин "С17" является общепринятым (и широко распространенным) названием для него, и хотя его __STDC_VERSION__
макрос 201710L
это действительно "C18" (и технически ISO / IEC 9899: 2018).
(см. C++98 __cplusplus
является 199711L
; именно так иногда и работают временные рамки, когда публикация тянется немного в следующем году после того, как такие вещи были согласованы и заморожены.)
Начиная с C++17, стандарт C++ относится к C11 (это предложение было принято для части C++ 17 в 2016 году), а не к C17. Но я бы не назвал это "на основе".
Кроме того, стандарты C++ и C разрабатываются различными рабочими группами, которые на самом деле не пересекаются, поэтому между ними нет прямой связи (хотя есть некоторая попытка сохранить синхронизацию функций C и C++, когда это легко сделать / имеет смысл).
Определенно не C и C++ - это разные языки, у них совершенно разное дерево вовлечения. кстати, насколько я знаю, это c11