]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
Improve documentation of -std option for C++
authorredi <redi@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 13 Jan 2016 20:30:34 +0000 (20:30 +0000)
committerredi <redi@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 13 Jan 2016 20:30:34 +0000 (20:30 +0000)
* doc/invoke.texi (C Dialect Options): Adjust -std default for C++.
(C++ Dialect Options): Add cross-reference to -std option.
* doc/standards.texi (C++ Language): Document C++14 support.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@232349 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/doc/invoke.texi
gcc/doc/standards.texi

index 784d5b18613c197e1bc6d2e4682e6b96bf4e4921..f4048fee830272e27adf54ffd221b6ebfd2a0f04 100644 (file)
@@ -1,3 +1,9 @@
+2016-01-13  Jonathan Wakely  <jwakely@redhat.com>
+
+       * doc/invoke.texi (C Dialect Options): Adjust -std default for C++.
+       (C++ Dialect Options): Add cross-reference to -std option.
+       * doc/standards.texi (C++ Language): Document C++14 support.
+
 2016-01-13  Michael Meissner  <meissner@linux.vnet.ibm.com>
 
        * config/rs6000/rs6000-builtin.def (BU_FLOAT128_2): Add support
index d532aab3197deb760a4759e4ad9229331407e0e9..207df12022609f724489a347f9d2b29c891005f7 100644 (file)
@@ -1784,8 +1784,7 @@ additional defect reports. Same as @option{-ansi} for C++ code.
 
 @item gnu++98
 @itemx gnu++03
-GNU dialect of @option{-std=c++98}.  This is the default for
-C++ code.
+GNU dialect of @option{-std=c++98}.
 
 @item c++11
 @itemx c++0x
@@ -1805,6 +1804,7 @@ The name @samp{c++1y} is deprecated.
 @item gnu++14
 @itemx gnu++1y
 GNU dialect of @option{-std=c++14}.
+This is the default for C++ code.
 The name @samp{gnu++1y} is deprecated.
 
 @item c++1z
@@ -2132,6 +2132,10 @@ In this example, only @option{-fstrict-enums} is an option meant
 only for C++ programs; you can use the other options with any
 language supported by GCC@.
 
+Some options for compiling C programs, such as @option{-std}, are also
+relevant for C++ programs.
+@xref{C Dialect Options,,Options Controlling C Dialect}.
+
 Here is a list of options that are @emph{only} for compiling C++ programs:
 
 @table @gcctabopt
@@ -2317,7 +2321,8 @@ otherwise be invalid, or have different behavior.
 @opindex fno-gnu-keywords
 Do not recognize @code{typeof} as a keyword, so that code can use this
 word as an identifier.  You can use the keyword @code{__typeof__} instead.
-@option{-ansi} implies @option{-fno-gnu-keywords}.
+This option is implied by the strict ISO C++ dialects: @option{-ansi},
+@option{-std=c++98}, @option{-std=c++11}, etc.
 
 @item -fno-implicit-templates
 @opindex fno-implicit-templates
index 55d57d4ed87cf1b986fd2e8ade430efe92476918..e029077663054348c66c912a562685e467442de0 100644 (file)
@@ -105,7 +105,7 @@ standard version were referred to as @dfn{C1X}.)
 By default, GCC provides some extensions to the C language that on
 rare occasions conflict with the C standard.  @xref{C
 Extensions,,Extensions to the C Language Family}.  Use of the
-@option{-std} options listed above will disable these extensions where
+@option{-std} options listed above disables these extensions where
 they conflict with the C standard version selected.  You may also
 select an extended version of the C language explicitly with
 @option{-std=gnu90} (for C90 with GNU extensions), @option{-std=gnu99}
@@ -171,8 +171,8 @@ information concerning the history of C that is available online, see
 
 @section C++ Language
 
-GCC supports the original ISO C++ standard (1998) and contains
-experimental support for the second ISO C++ standard (2011).
+GCC supports the original ISO C++ standard published in 1998,
+and the 2011 and 2014 revisions.
 
 The original ISO C++ standard was published as the ISO standard (ISO/IEC
 14882:1998) and amended by a Technical Corrigenda published in 2003
@@ -187,26 +187,46 @@ warnings).
 
 A revised ISO C++ standard was published in 2011 as ISO/IEC
 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, most of which have been implemented in an
-experimental C++11 mode in GCC@.  For information
-regarding the C++11 features available in the experimental C++11 mode,
-see @uref{http://gcc.gnu.org/projects/@/cxx0x.html}. To select this
-standard in GCC, use the option @option{-std=c++11}; to obtain all the
-diagnostics required by the standard, you should also specify
-@option{-pedantic} (or @option{-pedantic-errors} if you want them to
-be errors rather than warnings).
+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}.
+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}.
+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}.
 
 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/}.
 
-By default, GCC provides some extensions to the C++ language; @xref{C++
+To obtain all the diagnostics required by any of the standard versions
+described above you should specify @option{-pedantic}
+or @option{-pedantic-errors}, otherwise GCC will allow some non-ISO C++
+features as extensions. @xref{Warning Options}.
+
+By default, GCC also provides some additional extensions to the C++ language
+that on rare occasions conflict with the C++ standard.  @xref{C++
 Dialect Options,Options Controlling C++ Dialect}.  Use of the
-@option{-std} option listed above will disable these extensions.  You
-may also select an extended version of the C++ language explicitly with
-@option{-std=gnu++98} (for C++98 with GNU extensions) or
-@option{-std=gnu++11} (for C++11 with GNU extensions).  The default, if
-no C++ language dialect options are given, is @option{-std=gnu++98}.
+@option{-std} options listed above disables these extensions where they
+they conflict with the C++ standard version selected.  You may also
+select an extended version of the C++ language explicitly with
+@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).  The default, if
+no C++ language dialect options are given, is @option{-std=gnu++14}.
 
 @section Objective-C and Objective-C++ Languages
 @cindex Objective-C