Есть ли причина не использовать новейший стандарт C ++? - PullRequest
18 голосов
/ 21 июня 2020

Я видел, что стандарт по умолчанию в IDE обычно не является новейшим выпущенным стандартом, даже не самым новым стандартом в IDE. Например, Clion от JetBrains имеет C ++ 20 и C ++ 17, но параметр по умолчанию - C ++ 14.

Есть ли причина не использовать новейший выпущенный стандарт?

1 Ответ

30 голосов
/ 21 июня 2020

Как правило, по возможности используйте последний стандарт.

Но есть несколько причин, по которым в некоторых ситуациях вы можете выбрать более старый.

  • В вашем коде используются функции, которые изменили поведение в новых стандартах или были полностью удалены. Если у вас нет времени на обновление кода, разумно будет компилировать старый стандарт.

  • Возможно, ваша цепочка инструментов не реализует новый стандарт правильно. Могут быть известные ошибки, которые вынуждают вас придерживаться более старого.

  • Необходимо поддерживать несколько компиляторов на нескольких платформах, и не все комбинации пока поддерживают новый стандарт.

  • Вы должны быть двоично совместимы с кодом, созданным более старым компилятором для более старого стандарта, и у вас нет источника для его перекомпиляции. В этом случае вы можете быть вынуждены использовать тот же старый компилятор и стандарт языка для обеспечения совместимости с ABI.

  • Внутренняя политика компании может предписывать конкретную версию c по произвольным причинам.

  • Требования сертификации могут требовать использования определенного c компилятора и языковой версии. Часто случается в строго регулируемых отраслях, например, в медицине.

  • Ваша команда может не знакомы с новыми функциями, поэтому их использование может увеличить риск ошибок.

Et c (я видел все вышесказанное в реальной жизни, кстати) ..

...