7.12 Устаревшие возможности
В прошлом компилятор GNU C++ расширялся для экспериментов с новыми возможностями, когда язык C++ все еще развивался. Теперь, когда стандарт C++ завершен, некоторые из этих возможностей устарели и заменены лучшими альтернативами. Использование устаревших возможностей может привести к предупреждению о том, что эта возможность будет удалена в будущем. В других случаях данная возможность уже удалена.
Хотя нижеследующий список не является исчерпывающим, он документирует некоторые устаревшие варианты:
-
-fexternal-templates-falt-external-templates - Это два из многих способов реализации G++ для шаблонов. См. Инициализация шаблонов. Стандарт C++ четко определяет, как определения шаблонов должны быть организованы в модулях. В G++ реализован механизм неявной инициализации, который должен работать нормально для кода, соответствующего стандарту.
-
-fstrict-prototype-fno-strict-prototype - Ранее было возможно использовать пустой прототип параметров для обозначения неопределенного количества параметров (как в C), а не отсутствие параметров, как требует C++. Эта функция была удалена, за исключением случаев, когда она требуется для обратной совместимости. См. Обратная совместимость.
G++ позволяет переопределять виртуальную функцию, возвращающую ‘void *’, функцией, возвращающей другой тип указателя. Это расширение правил ковариативного возврата типа сейчас устарело и будет удалено в будущей версии.
Операторы минимума и максимума G++ (‘<?’ и ‘>?’) и их составные формы (‘<?=’) и ‘>?=’) устарели и теперь удалены из G++. Код, использующий эти операторы, должен быть изменен на использование std::min и std::max вместо них.
Расширение именованных значений возврата устарело и теперь удалено из G++.
Использование списков инициализации с операторами new устарело и теперь удалено из G++.
Числовые и комплексные параметры шаблонов, не являющиеся типами, устарели и теперь удалены из G++.
Расширение неявного типа устарело и теперь удалено из G++.
Использование аргументов по умолчанию в указателях на функции, определениях типов функций и других местах, где они не разрешены стандартом, устарело и будет удалено в будущей версии G++.
G++ позволяет использовать десятичные литералы в целочисленных константных выражениях, например, ‘ enum E { e = int(2.2 * 3.7) } ’. Это расширение устарело и будет удалено в будущей версии.
G++ позволяет объявлять статические члены данных типа const с плавающей точкой с инициализатором в определении класса. Стандарт разрешает инициализаторы только для статических членов типа const целого типа и типа перечисления const, поэтому это расширение устарело и будет удалено в будущей версии.
© Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.
https://gcc.gnu.org/onlinedocs/gcc-4.9.4/gcc/Deprecated-Features.html