-@c Copyright (C) 2000-2017 Free Software Foundation, Inc.
+@c Copyright (C) 2000-2020 Free Software Foundation, Inc.
@c This is part of the GCC manual.
@c For copying conditions, see the file gcc.texi.
@cindex C11
@cindex ISO C1X
@cindex C1X
+@cindex ISO C17
+@cindex C17
+@cindex ISO C2X
+@cindex C2X
@cindex Technical Corrigenda
@cindex TC1
@cindex Technical Corrigendum 1
standard version were referred to as @dfn{C1X}.)
GCC has substantially complete support
for this standard, enabled with @option{-std=c11} or
-@option{-std=iso9899:2011}.
+@option{-std=iso9899:2011}. A version with corrections integrated was
+prepared in 2017 and published in 2018 as ISO/IEC 9899:2018; it is
+known as @dfn{C17} and is supported with @option{-std=c17} or
+@option{-std=iso9899:2017}; the corrections are also applied with
+@option{-std=c11}, and the only difference between the options is the
+value of @code{__STDC_VERSION__}.
+
+A further version of the C standard, known as @dfn{C2X}, is under
+development; experimental and incomplete support for this is enabled
+with @option{-std=c2x}.
By default, GCC provides some extensions to the C language that, on
rare occasions conflict with the C standard. @xref{C
14882:2011, and is referred to as C++11; before its publication it was
commonly referred to as C++0x. C++11 contains several changes to the
C++ language, all of which have been implemented in GCC@. For details
-see @uref{https://gcc.gnu.org/projects/@/cxx0x.html}.
+see @uref{https://gcc.gnu.org/projects/@/cxx-status.html#cxx11}.
To select this standard in GCC, use the option @option{-std=c++11}.
Another revised ISO C++ standard was published in 2014 as ISO/IEC
14882:2014, and is referred to as C++14; before its publication it was
sometimes referred to as C++1y. C++14 contains several further
changes to the C++ language, all of which have been implemented in GCC@.
-For details see @uref{https://gcc.gnu.org/projects/@/cxx1y.html}.
+For details see @uref{https://gcc.gnu.org/projects/@/cxx-status.html#cxx14}.
To select this standard in GCC, use the option @option{-std=c++14}.
-GCC also supports the C++ Concepts Technical Specification,
-ISO/IEC TS 19217:2015, which allows constraints to be defined for templates,
-allowing template arguments to be checked and for templates to be
-overloaded or specialized based on the constraints. Support for C++ Concepts
-is included in an experimental C++1z mode that corresponds to the next
-revision of the ISO C++ standard, expected to be published in 2017. To enable
-C++1z support in GCC, use the option @option{-std=c++17} or
-@option{-std=c++1z}.
+The C++ language was further revised in 2017 and ISO/IEC 14882:2017 was
+published. This is referred to as C++17, and before publication was
+often referred to as C++1z. GCC supports all the changes in the new
+specification. For further details see
+@uref{https://gcc.gnu.org/projects/@/cxx-status.html#cxx1z}. Use the option
+@option{-std=c++17} to select this variant of C++.
More information about the C++ standards is available on the ISO C++
committee's web site at @uref{http://www.open-std.org/@/jtc1/@/sc22/@/wg21/}.
@option{-std=gnu++98} (for C++98 with GNU extensions), or
@option{-std=gnu++11} (for C++11 with GNU extensions), or
@option{-std=gnu++14} (for C++14 with GNU extensions), or
-@option{-std=gnu++1z} (for C++1z with GNU extensions).
+@option{-std=gnu++17} (for C++17 with GNU extensions).
The default, if
no C++ language dialect options are given, is @option{-std=gnu++14}.
The authoritative manual on Objective-C 2.0 is available from Apple:
@itemize
@item
-@uref{https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/ProgrammingWithObjectiveC/Introduction/Introduction.html}
+@uref{https://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/ProgrammingWithObjectiveC/Introduction/Introduction.html}
@end itemize
For more information concerning the history of Objective-C that is
finalization extension for a gcc supported processor. HSA standards are
freely available at @uref{http://www.hsafoundation.com/standards/}.
+@section D language
+
+GCC supports the D 2.0 programming language. The D language itself is
+currently defined by its reference implementation and supporting language
+specification, described at @uref{https://dlang.org/spec/spec.html}.
+
@section References for Other Languages
@xref{Top, GNAT Reference Manual, About This Guide, gnat_rm,