Backport libstdc++ documentation improvements

* doc/xml/manual/abi.xml: Backport documentation improvements from
	mainline.
	* doc/xml/manual/configure.xml: Likewise.
	* doc/xml/manual/diagnostics.xml: Likewise.
	* doc/xml/manual/extensions.xml: Likewise.
	* doc/xml/manual/status_cxx2011.xml: Likewise.
	* doc/xml/manual/status_cxx2014.xml: Likewise.
	* doc/xml/manual/using.xml: Likewise.
	* doc/html/*: Regenerate.

From-SVN: r231409
This commit is contained in:
Jonathan Wakely 2015-12-08 14:00:31 +00:00 committed by Jonathan Wakely
parent 55b67ecd98
commit 5d8674c4eb
20 changed files with 184 additions and 66 deletions

View File

@ -1,3 +1,15 @@
2015-12-08 Jonathan Wakely <jwakely@redhat.com>
* doc/xml/manual/abi.xml: Backport documentation improvements from
mainline.
* doc/xml/manual/configure.xml: Likewise.
* doc/xml/manual/diagnostics.xml: Likewise.
* doc/xml/manual/extensions.xml: Likewise.
* doc/xml/manual/status_cxx2011.xml: Likewise.
* doc/xml/manual/status_cxx2014.xml: Likewise.
* doc/xml/manual/using.xml: Likewise.
* doc/html/*: Regenerate.
2015-12-04 Jonathan Wakely <jwakely@redhat.com> 2015-12-04 Jonathan Wakely <jwakely@redhat.com>
PR libstdc++/56383 PR libstdc++/56383

File diff suppressed because one or more lines are too long

View File

@ -38,7 +38,7 @@
documented documented
<a class="link" href="configure.html" title="Configure">here</a>. <a class="link" href="configure.html" title="Configure">here</a>.
</p><p> Putting all of these ideas together results in the C++ Standard </p><p> Putting all of these ideas together results in the C++ Standard
library ABI, which is the compilation of a given library API by a Library ABI, which is the compilation of a given library API by a
given compiler ABI. In a nutshell: given compiler ABI. In a nutshell:
</p><p> </p><p>
<span class="quote"><span class="quote"> <span class="quote"><span class="quote">

View File

@ -35,8 +35,9 @@
<code class="literal">-D_GLIBCXX_CONCEPT_CHECKS</code>. <code class="literal">-D_GLIBCXX_CONCEPT_CHECKS</code>.
</p><p> </p><p>
Please note that the checks are based on the requirements in the original Please note that the checks are based on the requirements in the original
C++ standard, some of which have changed in the new C++11 revision. C++ standard, many of which were relaxed in the C++11 standard and so valid
Additionally, some correct code might be rejected by the concept checks, C++11 code may be incorrectly rejected by the concept checks. Additionally,
some correct C++03 code might be rejected by the concept checks,
for example template argument types may need to be complete when used in for example template argument types may need to be complete when used in
a template definition, rather than at the point of instantiation. a template definition, rather than at the point of instantiation.
There are no plans to address these shortcomings. There are no plans to address these shortcomings.

View File

@ -174,10 +174,12 @@
Mostly useful together with shared memory allocators, see PR Mostly useful together with shared memory allocators, see PR
libstdc++/16612 for details. libstdc++/16612 for details.
</p></dd><dt><span class="term"><code class="code">--enable-concept-checks</code></span></dt><dd><p>This turns on additional compile-time checks for instantiated </p></dd><dt><span class="term"><code class="code">--enable-concept-checks</code></span></dt><dd><p>This turns on additional compile-time checks for instantiated
library templates, in the form of specialized templates, library templates, in the form of specialized templates described in
<a class="link" href="concept_checking.html" title="Concept Checking">described here</a>. They the <a class="link" href="concept_checking.html" title="Concept Checking">Concept
Checking</a> section. They
can help users discover when they break the rules of the STL, before can help users discover when they break the rules of the STL, before
their programs run. their programs run. These checks are based on C++03 rules and some of
them are not compatible with correct C++11 code.
</p></dd><dt><span class="term"><code class="code">--enable-symvers[=style]</code></span></dt><dd><p>In 3.1 and later, tries to turn on symbol versioning in the </p></dd><dt><span class="term"><code class="code">--enable-symvers[=style]</code></span></dt><dd><p>In 3.1 and later, tries to turn on symbol versioning in the
shared library (if a shared library has been shared library (if a shared library has been
requested). Values for 'style' that are currently supported requested). Values for 'style' that are currently supported
@ -236,9 +238,10 @@
</p></dd><dt><span class="term"><code class="code">--with-default-libstdcxx-abi=</code><em class="replaceable"><code>OPTION</code></em></span></dt><dd><p> </p></dd><dt><span class="term"><code class="code">--with-default-libstdcxx-abi=</code><em class="replaceable"><code>OPTION</code></em></span></dt><dd><p>
Set the default value for the <span class="symbol">_GLIBCXX_USE_CXX11_ABI</span> Set the default value for the <span class="symbol">_GLIBCXX_USE_CXX11_ABI</span>
macro (see <a class="xref" href="using_macros.html" title="Macros">Macros</a>). macro (see <a class="xref" href="using_macros.html" title="Macros">Macros</a>).
The default is <code class="option">OPTION=c++11</code> which sets the macro to The default is <code class="option">OPTION=new</code> which sets the macro to
<code class="literal">1</code>, <code class="literal">1</code>,
use <code class="option">OPTION=c++98</code> to set it to <code class="literal">0</code>. use <code class="option">OPTION=gcc4-compatible</code> to set it to
<code class="literal">0</code>.
This option does not change the library ABI. This option does not change the library ABI.
</p></dd><dt><span class="term"><code class="code">--enable-vtable-verify</code>[default]</span></dt><dd><p>Use <code class="code">-fvtable-verify=std</code> to compile the C++ </p></dd><dt><span class="term"><code class="code">--enable-vtable-verify</code>[default]</span></dt><dd><p>Use <code class="code">-fvtable-verify=std</code> to compile the C++
runtime with instrumentation for vtable verification. All virtual runtime with instrumentation for vtable verification. All virtual
@ -247,4 +250,8 @@
<code class="classname">iostream</code>, and others. Disabling means that <code class="classname">iostream</code>, and others. Disabling means that
the C++ runtime is compiled without support for vtable the C++ runtime is compiled without support for vtable
verification. By default, this option is off. verification. By default, this option is off.
</p></dd></dl></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="setup.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="setup.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="make.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 2. Setup </td><td width="20%" align="center"><a accesskey="h" href="../index.html">Home</a></td><td width="40%" align="right" valign="top"> Make</td></tr></table></div></body></html> </p></dd><dt><span class="term"><code class="code">--enable-libstdcxx-filesystem-ts</code>[default]</span></dt><dd><p>Build <code class="filename">libstdc++fs.a</code> as well
as the usual libstdc++ and libsupc++ libraries. This is enabled by
default on select POSIX targets where it is known to work and disabled
otherwise.
</p></dd></dl></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="setup.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="setup.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="make.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 2. Setup </td><td width="20%" align="center"><a accesskey="h" href="../index.html">Home</a></td><td width="40%" align="right" valign="top"> Make</td></tr></table></div></body></html>

View File

@ -29,7 +29,8 @@
They can be enabled at configure time with They can be enabled at configure time with
<a class="link" href="configure.html" title="Configure"><code class="literal">--enable-concept-checks</code></a>. <a class="link" href="configure.html" title="Configure"><code class="literal">--enable-concept-checks</code></a>.
You can enable them on a per-translation-unit basis with You can enable them on a per-translation-unit basis with
<code class="code">#define _GLIBCXX_CONCEPT_CHECKS</code> for GCC 3.4 and higher <a class="link" href="using_macros.html" title="Macros"><code class="code">#define
_GLIBCXX_CONCEPT_CHECKS</code></a> for GCC 3.4 and higher
(or with <code class="code">#define _GLIBCPP_CONCEPT_CHECKS</code> for versions (or with <code class="code">#define _GLIBCPP_CONCEPT_CHECKS</code> for versions
3.1, 3.2 and 3.3). 3.1, 3.2 and 3.3).
</p><p>Please note that the concept checks only validate the requirements </p><p>Please note that the concept checks only validate the requirements

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -102,4 +102,21 @@ A quick read of the relevant part of the GCC
also installed, for use with Libtool. If you use Libtool to also installed, for use with Libtool. If you use Libtool to
create your executables, these details are taken care of for create your executables, these details are taken care of for
you. you.
</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="manual.intro.using.linkage.experimental"></a>Experimental Library Extensions</h3></div></div></div><p>
GCC 5.3 includes an implementation of the Filesystem library defined
by the technical specification ISO/IEC TS 18822:2015. Because this is
an experimental library extension, not part of the C++ standard, it
is implemented in a separate library,
<code class="filename">libstdc++fs.a</code>, and there is
no shared library for it. To use the library you should include
<code class="filename">&lt;experimental/filesystem&gt;</code>
and link with <code class="option">-lstdc++fs</code>. The library implementation
is incomplete on non-POSIX platforms, specifically Windows support is
rudimentary.
</p><p>
Due to the experimental nature of the Filesystem library the usual
guarantees about ABI stability and backwards compatibility do not apply
to it. There is no guarantee that the components in any
<code class="filename">&lt;experimental/xxx&gt;</code>
header will remain compatible between different GCC releases.
</p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="using_namespaces.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="using.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="using_concurrency.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Namespaces </td><td width="20%" align="center"><a accesskey="h" href="../index.html">Home</a></td><td width="40%" align="right" valign="top"> Concurrency</td></tr></table></div></body></html> </p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="using_namespaces.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="using.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="using_concurrency.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Namespaces </td><td width="20%" align="center"><a accesskey="h" href="../index.html">Home</a></td><td width="40%" align="right" valign="top"> Concurrency</td></tr></table></div></body></html>

View File

@ -74,12 +74,15 @@ of <code class="code">std::sinf</code>, <code class="code">std::sin</code>,
and <code class="code">std::sinl</code>. and <code class="code">std::sinl</code>.
</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="manual.intro.using.headers.pre"></a>Precompiled Headers</h3></div></div></div><p>There are three base header files that are provided. They can be </p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="manual.intro.using.headers.pre"></a>Precompiled Headers</h3></div></div></div><p>There are three base header files that are provided. They can be
used to precompile the standard headers and extensions into binary used to precompile the standard headers and extensions into binary
files that may the be used to speed compiles that use these headers. files that may then be used to speed up compilations that use these headers.
</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>stdc++.h</p><p>Includes all standard headers. Actual content varies depending on </p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>stdc++.h</p><p>Includes all standard headers. Actual content varies depending on
language dialect. <a class="link" href="using.html#manual.intro.using.flags" title="Command Options">language dialect</a>.
</p></li><li class="listitem"><p>stdtr1c++.h</p><p>Includes all of &lt;stdc++.h&gt;, and adds all the TR1 headers. </p></li><li class="listitem"><p>stdtr1c++.h</p><p>Includes all of &lt;stdc++.h&gt;, and adds all the TR1 headers.
</p></li><li class="listitem"><p>extc++.h</p><p>Includes all of &lt;stdtr1c++.h&gt;, and adds all the Extension headers. </p></li><li class="listitem"><p>extc++.h</p><p>Includes all of the Extension headers
</p></li></ul></div><p>How to construct a .gch file from one of these base header files.</p><p>First, find the include directory for the compiler. One way to do (and in C++98 mode also adds all the TR1 headers by including all of
&lt;stdtr1c++.h&gt;).
</p></li></ul></div><p>To construct a .gch file from one of these base header files,
first find the include directory for the compiler. One way to do
this is:</p><pre class="programlisting"> this is:</p><pre class="programlisting">
g++ -v hello.cc g++ -v hello.cc

View File

@ -2,8 +2,8 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Namespaces</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.78.1" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="using.html" title="Chapter 3. Using" /><link rel="prev" href="using_dual_abi.html" title="Dual ABI" /><link rel="next" href="using_dynamic_or_shared.html" title="Linking" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Namespaces</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="using_dual_abi.html">Prev</a> </td><th width="60%" align="center">Chapter 3. Using</th><td width="20%" align="right"> <a accesskey="n" href="using_dynamic_or_shared.html">Next</a></td></tr></table><hr /></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.intro.using.namespaces"></a>Namespaces</h2></div></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="manual.intro.using.namespaces.all"></a>Available Namespaces</h3></div></div></div><p> There are three main namespaces. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Namespaces</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.78.1" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="using.html" title="Chapter 3. Using" /><link rel="prev" href="using_dual_abi.html" title="Dual ABI" /><link rel="next" href="using_dynamic_or_shared.html" title="Linking" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Namespaces</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="using_dual_abi.html">Prev</a> </td><th width="60%" align="center">Chapter 3. Using</th><td width="20%" align="right"> <a accesskey="n" href="using_dynamic_or_shared.html">Next</a></td></tr></table><hr /></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.intro.using.namespaces"></a>Namespaces</h2></div></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="manual.intro.using.namespaces.all"></a>Available Namespaces</h3></div></div></div><p> There are three main namespaces.
</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>std</p><p>The ISO C++ standards specify that "all library entities are defined </p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>std</p><p>The ISO C++ standards specify that "all library entities are defined
within namespace std." This includes namespaces nested within namespace std." This includes namespaces nested
within <code class="code">namespace std</code>, such as <code class="code">namespace within namespace <code class="code">std</code>, such as namespace
std::tr1</code>. <code class="code">std::chrono</code>.
</p></li><li class="listitem"><p>abi</p><p>Specified by the C++ ABI. This ABI specifies a number of type and </p></li><li class="listitem"><p>abi</p><p>Specified by the C++ ABI. This ABI specifies a number of type and
function APIs supplemental to those required by the ISO C++ Standard, function APIs supplemental to those required by the ISO C++ Standard,
but necessary for interoperability. but necessary for interoperability.

View File

@ -66,7 +66,7 @@
</para> </para>
<para> Putting all of these ideas together results in the C++ Standard <para> Putting all of these ideas together results in the C++ Standard
library ABI, which is the compilation of a given library API by a Library ABI, which is the compilation of a given library API by a
given compiler ABI. In a nutshell: given compiler ABI. In a nutshell:
</para> </para>

View File

@ -297,10 +297,12 @@
<varlistentry><term><code>--enable-concept-checks</code></term> <varlistentry><term><code>--enable-concept-checks</code></term>
<listitem><para>This turns on additional compile-time checks for instantiated <listitem><para>This turns on additional compile-time checks for instantiated
library templates, in the form of specialized templates, library templates, in the form of specialized templates described in
<link linkend="std.diagnostics.concept_checking">described here</link>. They the <link linkend="std.diagnostics.concept_checking">Concept
Checking</link> section. They
can help users discover when they break the rules of the STL, before can help users discover when they break the rules of the STL, before
their programs run. their programs run. These checks are based on C++03 rules and some of
them are not compatible with correct C++11 code.
</para> </para>
</listitem></varlistentry> </listitem></varlistentry>
@ -418,6 +420,15 @@
</para> </para>
</listitem></varlistentry> </listitem></varlistentry>
<varlistentry><term><code>--enable-libstdcxx-filesystem-ts</code>[default]</term>
<listitem>
<para>Build <filename class="libraryfile">libstdc++fs.a</filename> as well
as the usual libstdc++ and libsupc++ libraries. This is enabled by
default on select POSIX targets where it is known to work and disabled
otherwise.
</para>
</listitem></varlistentry>
</variablelist> </variablelist>
</section> </section>

View File

@ -114,8 +114,9 @@
<para> <para>
Please note that the checks are based on the requirements in the original Please note that the checks are based on the requirements in the original
C++ standard, some of which have changed in the new C++11 revision. C++ standard, many of which were relaxed in the C++11 standard and so valid
Additionally, some correct code might be rejected by the concept checks, C++11 code may be incorrectly rejected by the concept checks. Additionally,
some correct C++03 code might be rejected by the concept checks,
for example template argument types may need to be complete when used in for example template argument types may need to be complete when used in
a template definition, rather than at the point of instantiation. a template definition, rather than at the point of instantiation.
There are no plans to address these shortcomings. There are no plans to address these shortcomings.

View File

@ -82,7 +82,8 @@ extensions, be aware of two things:
They can be enabled at configure time with They can be enabled at configure time with
<link linkend="manual.intro.setup.configure"><literal>--enable-concept-checks</literal></link>. <link linkend="manual.intro.setup.configure"><literal>--enable-concept-checks</literal></link>.
You can enable them on a per-translation-unit basis with You can enable them on a per-translation-unit basis with
<code>#define _GLIBCXX_CONCEPT_CHECKS</code> for GCC 3.4 and higher <link linkend="manual.intro.using.macros"><code>#define
_GLIBCXX_CONCEPT_CHECKS</code></link> for GCC 3.4 and higher
(or with <code>#define _GLIBCPP_CONCEPT_CHECKS</code> for versions (or with <code>#define _GLIBCPP_CONCEPT_CHECKS</code> for versions
3.1, 3.2 and 3.3). 3.1, 3.2 and 3.3).
</para> </para>

View File

@ -17,8 +17,8 @@ Final Draft International Standard, Standard for Programming Language C++
</para> </para>
<para> <para>
In this implementation <literal>-std=gnu++11</literal> or In this implementation the <literal>-std=gnu++11</literal> or
<literal>-std=c++11</literal> flags must be used to enable language <literal>-std=c++11</literal> flag must be used to enable language
and library and library
features. See <link linkend="manual.intro.using.flags">dialect</link> features. See <link linkend="manual.intro.using.flags">dialect</link>
options. The pre-defined symbol options. The pre-defined symbol
@ -642,10 +642,8 @@ particular release.
<entry>Class template <code>shared_ptr</code></entry> <entry>Class template <code>shared_ptr</code></entry>
<entry>Y</entry> <entry>Y</entry>
<entry> <entry>
<para>
Uses code from Uses code from
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.boost.org/libs/smart_ptr/shared_ptr.htm">boost::shared_ptr</link>. <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.boost.org/libs/smart_ptr/shared_ptr.htm">boost::shared_ptr</link>.
</para>
</entry> </entry>
</row> </row>
<row> <row>
@ -2673,7 +2671,10 @@ particular release.
<emphasis>30.2.3 [thread.req.native]/1</emphasis> <emphasis>30.2.3 [thread.req.native]/1</emphasis>
<classname>native_handle_type</classname> and <classname>native_handle_type</classname> and
<methodname>native_handle</methodname> are provided. The handle types <methodname>native_handle</methodname> are provided. The handle types
are defined in terms of the Gthreads abstraction layer. are defined in terms of the Gthreads abstraction layer, although this
is subject to change at any time. Any use of
<classname>native_handle</classname> is inherently non-portable and
not guaranteed to work between major releases of GCC.
<itemizedlist> <itemizedlist>
<listitem><para><classname>thread</classname>: The native handle type is <listitem><para><classname>thread</classname>: The native handle type is
a typedef for <code>__gthread_t</code> i.e. <code>pthread_t</code> a typedef for <code>__gthread_t</code> i.e. <code>pthread_t</code>

View File

@ -10,8 +10,8 @@
</info> </info>
<para> <para>
In this implementation <literal>-std=gnu++1y</literal> or In this implementation the <literal>-std=gnu++14</literal> or
<literal>-std=c++1y</literal> flags must be used to enable language <literal>-std=c++14</literal> flag must be used to enable language
and library and library
features. See <link linkend="manual.intro.using.flags">dialect</link> features. See <link linkend="manual.intro.using.flags">dialect</link>
options. The pre-defined symbol options. The pre-defined symbol
@ -196,7 +196,7 @@ not in any particular release.
</entry> </entry>
<entry>Shared Locking in C++</entry> <entry>Shared Locking in C++</entry>
<entry>Y</entry> <entry>Y</entry>
<entry>Need tests</entry> <entry/>
</row> </row>
@ -395,15 +395,18 @@ not in any particular release.
</row> </row>
<row> <row>
<?dbhtml bgcolor="#C8C8B0" ?>
<entry> <entry>
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n3932.htm"> <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4100.pdf">
N3940 N4100
</link> </link>
</entry> </entry>
<entry>File System</entry> <entry>File System</entry>
<entry>WIP</entry> <entry>Y</entry>
<entry></entry> <entry>
Link with
<link linkend="manual.intro.using.linkage.experimental">
<option>-lstdc++fs</option></link>
</entry>
</row> </row>

View File

@ -13,7 +13,10 @@
</para> </para>
<para> <para>
By default, <command>g++</command> is equivalent to <command>g++ -std=gnu++98</command>. The standard library also defaults to this dialect. The standard library conforms to the dialect of C++ specified by the
<option>-std</option> option passed to the compiler.
By default, <command>g++</command> is equivalent to
<command>g++ -std=gnu++98</command> for GCC 5 and older releases.
</para> </para>
<table frame="all" xml:id="table.cmd_options"> <table frame="all" xml:id="table.cmd_options">
@ -32,12 +35,14 @@
<tbody> <tbody>
<row> <row>
<entry><literal>-std=c++98</literal></entry> <entry><literal>-std=c++98</literal> or <literal>-std=c++03</literal>
</entry>
<entry>Use the 1998 ISO C++ standard plus amendments.</entry> <entry>Use the 1998 ISO C++ standard plus amendments.</entry>
</row> </row>
<row> <row>
<entry><literal>-std=gnu++98</literal></entry> <entry><literal>-std=gnu++98</literal> or <literal>-std=gnu++03</literal>
</entry>
<entry>As directly above, with GNU extensions.</entry> <entry>As directly above, with GNU extensions.</entry>
</row> </row>
@ -51,6 +56,16 @@
<entry>As directly above, with GNU extensions.</entry> <entry>As directly above, with GNU extensions.</entry>
</row> </row>
<row>
<entry><literal>-std=c++14</literal></entry>
<entry>Use the 2014 ISO C++ standard.</entry>
</row>
<row>
<entry><literal>-std=gnu++14</literal></entry>
<entry>As directly above, with GNU extensions.</entry>
</row>
<row> <row>
<entry><literal>-fexceptions</literal></entry> <entry><literal>-fexceptions</literal></entry>
<entry>See <link linkend="intro.using.exception.no">exception-free dialect</link></entry> <entry>See <link linkend="intro.using.exception.no">exception-free dialect</link></entry>
@ -79,6 +94,14 @@
</entry> </entry>
</row> </row>
<row>
<entry><literal>-lstdc++fs</literal></entry>
<entry>Linking to <filename class="libraryfile">libstdc++fs</filename>
is required for use of the Filesystem library extensions in
<filename class="headerfile">&lt;experimental/filesystem&gt;</filename>.
</entry>
</row>
<row> <row>
<entry><literal>-fopenmp</literal></entry> <entry><literal>-fopenmp</literal></entry>
<entry>For <link linkend="manual.ext.parallel_mode">parallel</link> mode.</entry> <entry>For <link linkend="manual.ext.parallel_mode">parallel</link> mode.</entry>
@ -703,7 +726,7 @@ and <code>std::sinl</code>.
<para>There are three base header files that are provided. They can be <para>There are three base header files that are provided. They can be
used to precompile the standard headers and extensions into binary used to precompile the standard headers and extensions into binary
files that may the be used to speed compiles that use these headers. files that may then be used to speed up compilations that use these headers.
</para> </para>
@ -711,7 +734,7 @@ files that may the be used to speed compiles that use these headers.
<listitem> <listitem>
<para>stdc++.h</para> <para>stdc++.h</para>
<para>Includes all standard headers. Actual content varies depending on <para>Includes all standard headers. Actual content varies depending on
language dialect. <link linkend="manual.intro.using.flags">language dialect</link>.
</para> </para>
</listitem> </listitem>
@ -722,13 +745,14 @@ language dialect.
</listitem> </listitem>
<listitem><para>extc++.h</para> <listitem><para>extc++.h</para>
<para>Includes all of &lt;stdtr1c++.h&gt;, and adds all the Extension headers. <para>Includes all of the Extension headers
(and in C++98 mode also adds all the TR1 headers by including all of
&lt;stdtr1c++.h&gt;).
</para></listitem> </para></listitem>
</itemizedlist> </itemizedlist>
<para>How to construct a .gch file from one of these base header files.</para> <para>To construct a .gch file from one of these base header files,
first find the include directory for the compiler. One way to do
<para>First, find the include directory for the compiler. One way to do
this is:</para> this is:</para>
<programlisting> <programlisting>
@ -1027,8 +1051,8 @@ g++ -Winvalid-pch -I. -include stdc++.h -H -g -O2 hello.cc -o test.exe
<listitem><para>std</para> <listitem><para>std</para>
<para>The ISO C++ standards specify that "all library entities are defined <para>The ISO C++ standards specify that "all library entities are defined
within namespace std." This includes namespaces nested within namespace std." This includes namespaces nested
within <code>namespace std</code>, such as <code>namespace within namespace <code>std</code>, such as namespace
std::tr1</code>. <code>std::chrono</code>.
</para> </para>
</listitem> </listitem>
<listitem><para>abi</para> <listitem><para>abi</para>
@ -1333,8 +1357,31 @@ A quick read of the relevant part of the GCC
you. you.
</para> </para>
</section> </section>
</section>
<section xml:id="manual.intro.using.linkage.experimental" xreflabel="Library Extensions"><info><title>Experimental Library Extensions</title></info>
<para>
GCC 5.3 includes an implementation of the Filesystem library defined
by the technical specification ISO/IEC TS 18822:2015. Because this is
an experimental library extension, not part of the C++ standard, it
is implemented in a separate library,
<filename class="libraryfile">libstdc++fs.a</filename>, and there is
no shared library for it. To use the library you should include
<filename class="headerfile">&lt;experimental/filesystem&gt;</filename>
and link with <option>-lstdc++fs</option>. The library implementation
is incomplete on non-POSIX platforms, specifically Windows support is
rudimentary.
</para>
<para>
Due to the experimental nature of the Filesystem library the usual
guarantees about ABI stability and backwards compatibility do not apply
to it. There is no guarantee that the components in any
<filename class="headerfile">&lt;experimental/xxx&gt;</filename>
header will remain compatible between different GCC releases.
</para>
</section>
</section>
<section xml:id="manual.intro.using.concurrency" xreflabel="Concurrency"><info><title>Concurrency</title></info> <section xml:id="manual.intro.using.concurrency" xreflabel="Concurrency"><info><title>Concurrency</title></info>
<?dbhtml filename="using_concurrency.html"?> <?dbhtml filename="using_concurrency.html"?>