In the past, the GNU C++ compiler was extended to experiment with new features, at a time when the C++ language was still evolving. Now that the C++ standard is complete, some of those features are superseded by superior alternatives. Using the old features might cause a warning in some cases that the feature will be dropped in the future. In other cases, the feature might be gone already.
While the list below is not exhaustive, it documents some of the options that are now deprecated:
The named return value extension has been deprecated, and is now removed from g++.
The use of initializer lists with new expressions has been deprecated, and is now removed from g++.
Floating and complex non-type template parameters have been deprecated, and are now removed from g++.
The implicit typename extension has been deprecated and will be removed
from g++ at some point. In some cases g++ determines that a dependent
type such as
TPL<T>::X is a type without needing a
typename keyword, contrary to the standard.