7.11 Устаревшие возможности
В прошлом компилятор 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++.
Использование аргументов по умолчанию в указателях на функции, typedef-ах функций и других местах, где они не разрешены стандартом, устарело и будет удалено в будущей версии G++.
G++ позволяет использовать числовые литералы с плавающей точкой в целочисленных константных выражениях, например, « enum E { e = int(2.2 * 3.7) } ». Это расширение устарело и будет удалено в будущей версии.
G++ позволяет объявлять статические данные-члены постоянного типа с плавающей точкой с инициализатором в определении класса. Стандарт разрешает инициализаторы только для статических членов постоянных целочисленных типов и типов перечислений, поэтому это расширение устарело и будет удалено в будущей версии.
Далее: Обратная совместимость, Предыдущее: C++ Концепции, Вверх: Расширения C++ [Содержание][Индекс]
© Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.
https://gcc.gnu.org/onlinedocs/gcc-7.5.0/gcc/Deprecated-Features.html