<book xmlns="http://docbook.org/ns/docbook" version="5.0">

<article xml:id="faq" xreflabel="Frequently Asked Questions">
<?dbhtml filename="faq.html"?>

<info><title>Frequently Asked Questions</title>

  <copyright>
    <year>
      2008-2023
    </year>
    <holder>
      <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.fsf.org">FSF</link>
    </holder>
  </copyright>
</info>

<!-- FAQ starts here -->
<qandaset xml:id="faq.faq">

<!-- General Information -->
<qandadiv xml:id="faq.info" xreflabel="General Information">

<qandaentry xml:id="faq.what">
  <question xml:id="faq.what.q">
    <para>
      What is libstdc++?
    </para>
  </question>
  <answer xml:id="faq.what.a">
    <para>
     The GNU Standard C++ Library v3 is an ongoing project to
     implement the ISO 14882 C++ Standard Library as described in
     clauses 20 through 33 and annex D (prior to the 2017 standard
     the library clauses started with 17).  For those who want to see
     exactly how far the project has come, or just want the latest
     bleeding-edge code, the up-to-date source can be cloned via
     <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://gcc.gnu.org/git.html">Git</link>.
    </para>

    <para>
    N.B. The library is called libstdc++ <emphasis>not</emphasis> stdlibc++.
    </para>
  </answer>
</qandaentry>

<qandaentry xml:id="faq.why">
  <question xml:id="q-why">
    <para>
      Why should I use libstdc++?
    </para>
  </question>
  <answer xml:id="a-why">
    <para>
    The completion of the initial ISO C++ standardization effort gave the C++
    community a powerful set of reuseable tools in the form of the C++
    Standard Library.  However, for several years C++ implementations were
    (as the Draft Standard used to say) <quote>incomplet and
    incorrekt</quote>, and many suffered from limitations of the compilers
    that used them.
    </para>
    <para>
    The GNU compiler collection
    (<command>gcc</command>, <command>g++</command>, etc) is widely
    considered to be one of the leading compilers in the world.  Its
    development is overseen by the
    <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://gcc.gnu.org/">GCC team</link>.
    All of the rapid development and near-legendary portability
    that are the hallmarks of an open-source project are applied to libstdc++.
    </para>
    <para>
    All of the standard classes and functions from C++98/C++03, C++11 and C++14
    (such as <classname>string</classname>,
    <classname>vector&lt;&gt;</classname>, iostreams, algorithms etc.)
    are freely available and attempt to be fully compliant.
    Work is ongoing to complete support for the current revision of the
    ISO C++ Standard.
    </para>
  </answer>
</qandaentry>

<qandaentry xml:id="faq.who">
  <question xml:id="q-who">
    <para>
      Who's in charge of it?
    </para>
  </question>
  <answer xml:id="a-who">
    <para>
     The libstdc++ project is contributed to by several developers
     all over the world, in the same way as GCC or the Linux kernel.
     The current maintainers are listed in the
     <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://gcc.gnu.org/cgit/gcc/tree/MAINTAINERS"><filename>MAINTAINERS</filename></link>
     file (look for "c++ runtime libs").
    </para>
    <para>
    Development and discussion is held on the libstdc++ mailing
    list.  Subscribing to the list, or searching the list
    archives, is open to everyone.  You can read instructions for
    doing so on the <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://gcc.gnu.org/lists.html">GCC mailing lists</link> page.
    If you have questions, ideas, code, or are just curious, sign up!
    </para>
  </answer>
</qandaentry>

<qandaentry xml:id="faq.when">
  <question xml:id="q-when">
    <para>
      When is libstdc++ going to be finished?
    </para>
  </question>
  <answer xml:id="a-when">
    <para>
    Nathan Myers gave the best of all possible answers, responding to
    a Usenet article asking this question: <emphasis>Sooner, if you
    help.</emphasis>
    </para>
  </answer>
</qandaentry>

<qandaentry xml:id="faq.how">
  <question xml:id="q-how">
    <para>
      How do I contribute to the effort?
    </para>
  </question>
  <answer xml:id="a-how">
    <para>
    See the <link linkend="appendix.contrib">Contributing</link> section in
    the manual. Subscribing to the mailing list (see above, or
    the homepage) is a very good idea if you have something to
    contribute, or if you have spare time and want to
    help. Contributions don't have to be in the form of source code;
    anybody who is willing to help write documentation, for example,
    or has found a bug in code that we all thought was working and is
    willing to provide details, is more than welcome!
    </para>
  </answer>
</qandaentry>

<qandaentry xml:id="faq.whereis_old">
  <question xml:id="q-whereis_old">
    <para>
      What happened to the older libg++? I need that!
    </para>
  </question>
  <answer xml:id="a-whereis_old">
    <para>
    The last libg++ README states
    <quote>This package is considered obsolete and is no longer
    being developed.</quote>
    It should not be used for new projects, and won't even compile with
    recent releases of GCC (or most other C++ compilers).
    </para>
    <para>
    More information can be found in the
    <link linkend="manual.appendix.porting.backwards">Backwards
    Compatibility</link> section of the libstdc++ manual.
    </para>
  </answer>
</qandaentry>

<qandaentry xml:id="faq.more_questions">
  <question xml:id="q-more_questions">
    <para>
      What if I have more questions?
    </para>
  </question>
  <answer xml:id="a-more_questions">
    <para>
    If you have read the documentation, and your question remains
    unanswered, then just ask the mailing list. At present, you do not
    need to be subscribed to the list to send a message to it.  More
    information is available on the homepage (including how to browse
    the list archives); to send a message to the list,
    use <email>libstdc++@gcc.gnu.org</email>.
    </para>

    <para>
    If you have a question that you think should be included
    here, or if you have a question <emphasis>about</emphasis> a question/answer
    here, please send email to the libstdc++ mailing list, as above.
    </para>
  </answer>
</qandaentry>

</qandadiv>

<!-- License -->
<qandadiv xml:id="faq.license" xreflabel="License QA">


<qandaentry xml:id="faq.license.what">
  <question xml:id="q-license.what">
    <para>
      What are the license terms for libstdc++?
    </para>
  </question>
  <answer xml:id="a-license.what">
    <para>
    See <link linkend="manual.intro.status.license">our license description</link>
    for these and related questions.
    </para>
  </answer>
</qandaentry>

<qandaentry xml:id="faq.license.any_program">
  <question xml:id="q-license.any_program">
    <para>
      So any program which uses libstdc++ falls under the GPL?
    </para>
  </question>
  <answer xml:id="a-license.any_program">
    <para>
     No. The special exception permits use of the library in
     proprietary applications.
    </para>
  </answer>
</qandaentry>


<qandaentry xml:id="faq.license.lgpl">
  <question xml:id="q-license.lgpl">
    <para>
      How is that different from the GNU {Lesser,Library} GPL?
    </para>
  </question>
  <answer xml:id="a-license.lgpl">
    <para>
      The LGPL requires that users be able to replace the LGPL code with a
     modified version; this is trivial if the library in question is a C
     shared library.  But there's no way to make that work with C++, where
     much of the library consists of inline functions and templates, which
     are expanded inside the code that uses the library.  So to allow people
     to replace the library code, someone using the library would have to
     distribute their own source, rendering the LGPL equivalent to the GPL.
    </para>
  </answer>
</qandaentry>

<qandaentry xml:id="faq.license.what_restrictions">
  <question xml:id="q-license.what_restrictions">
    <para>
      I see. So, what restrictions are there on programs that use the library?
    </para>
  </question>
  <answer xml:id="a-license.what_restrictions">
    <para>
      None.  We encourage such programs to be released as free software,
     but we won't punish you or sue you if you choose otherwise.
    </para>
  </answer>
</qandaentry>

</qandadiv>

<!-- Installation -->
<qandadiv xml:id="faq.installation" xreflabel="Installation">


<qandaentry xml:id="faq.how_to_install">
  <question xml:id="q-how_to_install">
    <para>How do I install libstdc++?
    </para>
  </question>
  <answer xml:id="a-how_to_install">
    <para>
    Often libstdc++ comes pre-installed as an integral part of many
    existing GNU/Linux and Unix systems, as well as many embedded
    development tools. It may be necessary to install extra
    development packages to get the headers, or the documentation, or
    the source: please consult your vendor for details.
    </para>
    <para>
    To build and install from the GNU GCC sources, please consult the
    <link linkend="manual.intro.setup">setup
    documentation</link> for detailed
    instructions. You may wish to browse those files ahead
    of time to get a feel for what's required.
    </para>
  </answer>
</qandaentry>

<qandaentry xml:id="faq.how_to_get_sources">
  <question xml:id="q-how_to_get_sources">
    <para>How does one get current libstdc++ sources?
    </para>
  </question>
  <answer xml:id="a-how_to_get_sources">
    <para>
    Libstdc++ sources for all official releases can be obtained as
    part of the GCC sources, available from various sites and
    mirrors. A full <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://gcc.gnu.org/mirrors.html">list of
    download sites</link> is provided on the main GCC site.
    </para>
    <para>
    Current libstdc++ sources can always be found in the main GCC source
    repository, available using the appropriate version control tool.
    At this time, that tool is <application>Git</application>.
    For more details see the documentation on
    <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://gcc.gnu.org/git.html">using the Git repository</link>.
    </para>
  </answer>
</qandaentry>

<qandaentry xml:id="faq.how_to_test">
  <question xml:id="q-how_to_test">
    <para>How do I know if it works?
    </para>
  </question>
  <answer xml:id="a-how_to_test">
    <para>
    Libstdc++ comes with its own validation testsuite, which includes
    conformance testing, regression testing, ABI testing, and
    performance testing. Please consult the
    <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://gcc.gnu.org/install/test.html">testing
    documentation</link> for GCC and
    <link linkend="manual.intro.setup.test">Testing</link> in the libstdc++
    manual for more details.
    </para>
    <para>
    If you find bugs in the testsuite programs themselves, or if you
    think of a new test program that should be added to the suite,
    <emphasis>please</emphasis> write up your idea and send it to the list!
    </para>
  </answer>
</qandaentry>

<qandaentry xml:id="faq.how_to_set_paths">
  <question xml:id="q-how_to_set_paths">
    <para>How do I insure that the dynamically linked library will be found?
    </para>
  </question>
  <answer xml:id="a-how_to_set_paths">
    <para>
    Depending on your platform and library version, the error message might
    be similar to one of the following:
    </para>

    <screen>
    ./a.out: error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directory

    /usr/libexec/ld-elf.so.1: Shared object "libstdc++.so.6" not found
    </screen>

    <para>
    This doesn't mean that the shared library isn't installed, only
    that the dynamic linker can't find it. When a dynamically-linked
    executable is run the linker finds and loads the required shared
    libraries by searching a pre-configured list of directories. If
    the directory where you've installed libstdc++ is not in this list
    then the libraries won't be found.
    </para>

    <para>
    If you already have an older version of libstdc++ installed then the
    error might look like one of the following instead:
    </para>

    <screen>
    ./a.out: /usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.20' not found
    ./a.out: /usr/lib/libstdc++.so.6: version `CXXABI_1.3.8' not found
    </screen>

    <para>
    This means the linker found <filename>/usr/lib/libstdc++.so.6</filename>
    but that library belongs to an older version of GCC than was used to
    compile and link the program <filename>a.out</filename> (or some part
    of it). The program depends on code defined in the newer libstdc++
    that belongs to the newer version of GCC, so the linker must be told
    how to find the newer libstdc++ shared library.
    </para>

    <para>
    The simplest way to fix this is
    to use the <envar>LD_LIBRARY_PATH</envar> environment variable,
    which is a colon-separated list of directories in which the linker
    will search for shared libraries:
    </para>

    <screen><command>
    export LD_LIBRARY_PATH=${prefix}/lib:$LD_LIBRARY_PATH
    </command></screen>

    <para>
    Here the shell variable <varname>${prefix}</varname> is assumed to contain
    the directory prefix where GCC was installed to. The directory containing
    the library might depend on whether you want the 32-bit or 64-bit copy
    of the library, so for example would be
    <filename class="directory">${prefix}/lib64</filename> on some systems.
    The exact environment variable to use will depend on your
    platform, e.g. <envar>DYLD_LIBRARY_PATH</envar> for Darwin,
    <envar>LD_LIBRARY_PATH_32</envar>/<envar>LD_LIBRARY_PATH_64</envar>
    for Solaris 32-/64-bit,
    and <envar>SHLIB_PATH</envar> for HP-UX.
    </para>
    <para>
    See the man pages for <command>ld</command>, <command>ldd</command>
    and <command>ldconfig</command> for more information. The dynamic
    linker has different names on different platforms but the man page
    is usually called something such as <filename>ld.so</filename>,
    <filename>rtld</filename> or <filename>dld.so</filename>.
    </para>
    <para>
    Using <envar>LD_LIBRARY_PATH</envar> is not always the best solution,
    <link linkend="manual.intro.using.linkage.dynamic">Finding Dynamic or Shared
    Libraries</link> in the manual gives some alternatives.
    </para>
  </answer>
</qandaentry>

<qandaentry xml:id="faq.what_is_libsupcxx">
  <question xml:id="q-what_is_libsupcxx">
    <para>
      What's libsupc++?
    </para>
  </question>
  <answer xml:id="a-what_is_libsupcxx">
    <para>
      If the only functions from <filename class="libraryfile">libstdc++.a</filename>
      which you need are language support functions (those listed in
      <link linkend="std.support">clause 18</link> of the
      standard, e.g., <function>new</function> and
      <function>delete</function>), then try linking against
      <filename class="libraryfile">libsupc++.a</filename>, which is a subset of
      <filename class="libraryfile">libstdc++.a</filename>.  (Using <command>gcc</command>
      instead of <command>g++</command> and explicitly linking in
      <filename class="libraryfile">libsupc++.a</filename> via <option>-lsupc++</option>
      for the final link step will do it).  This library contains only
      those support routines, one per object file.  But if you are
      using anything from the rest of the library, such as IOStreams
      or vectors, then you'll still need pieces from
      <filename class="libraryfile">libstdc++.a</filename>.
    </para>
  </answer>
</qandaentry>

<qandaentry xml:id="faq.size">
  <question xml:id="q-size">
    <para>
      This library is HUGE!
    </para>
  </question>
  <answer xml:id="a-size">
    <para>
    Usually the size of libraries on disk isn't noticeable.  When a
    link editor (or simply <quote>linker</quote>) pulls things from a
    static archive library, only the necessary object files are copied
    into your executable, not the entire library.  Unfortunately, even
    if you only need a single function or variable from an object file,
    the entire object file is extracted.  (There's nothing unique to C++
    or libstdc++ about this; it's just common behavior, given here
    for background reasons.)
    </para>
    <para>
    Some of the object files which make up
    <filename class="libraryfile">libstdc++.a</filename> are rather large.
    If you create a statically-linked executable with
    <option>-static</option>, those large object files are suddenly part
    of your executable.  Historically the best way around this was to
    only place a very few functions (often only a single one) in each
    source/object file; then extracting a single function is the same
    as extracting a single <filename>.o</filename> file.  For libstdc++ this
    is only possible to a certain extent; the object files in question contain
    template classes and template functions, pre-instantiated, and
    splitting those up causes severe maintenance headaches.
    </para>
    <para>
    On supported platforms, libstdc++ takes advantage of garbage
    collection in the GNU linker to get a result similar to separating
    each symbol into a separate source and object files. On these platforms,
    GNU ld can place each function and variable into its own
    section in a <filename>.o</filename> file.  The GNU linker can then perform
    garbage collection on unused sections; this reduces the situation to only
    copying needed functions into the executable, as before, but all
    happens automatically.
    </para>
  </answer>
</qandaentry>

</qandadiv>


<!-- Platform-Specific Issues -->
<qandadiv xml:id="faq.platform-specific" xreflabel="Platform-Specific Issues">


<qandaentry xml:id="faq.other_compilers">
  <question xml:id="q-other_compilers">
    <para>
      Can libstdc++ be used with non-GNU compilers?
    </para>
  </question>
  <answer xml:id="a-other_compilers">
    <para>
    Perhaps.
    </para>
    <para>
    Since the goal of ISO Standardization is for all C++
    implementations to be able to share code, libstdc++ should be
    usable under any ISO-compliant compiler, at least in theory.
    </para>
    <para>
    However, the reality is that libstdc++ is targeted and optimized
    for GCC/G++. This means that often libstdc++ uses specific,
    non-standard features of G++ that are not present in older
    versions of proprietary compilers. It may take as much as a year or two
    after an official release of GCC that contains these features for
    proprietary tools to support these constructs.
    </para>
    <para>
    Recent versions of libstdc++ are known to work with the Clang compiler.
    In the near past, specific released versions of libstdc++ have
    been known to work with versions of the EDG C++ compiler, and
    vendor-specific proprietary C++ compilers such as the Intel ICC
    C++ compiler.
    </para>

  </answer>
</qandaentry>

<qandaentry xml:id="faq.solaris_long_long">
  <question xml:id="q-solaris_long_long">
    <para>
      No '<type>long long</type>' type on Solaris?
    </para>
  </question>
  <answer xml:id="a-solaris_long_long">
    <note>
       <para>This answer is old and probably no longer be relevant.</para>
    </note>
    <para>
    By default we try to support the C99 <type>long long</type> type.
    This requires that certain functions from your C library be present.
    </para>
    <para>
    Up through release 3.0.2 the platform-specific tests performed by
    libstdc++ were too general, resulting in a conservative approach
    to enabling the <type>long long</type> code paths. The most
    commonly reported platform affected was Solaris.
    </para>
    <para>
    This has been fixed for libstdc++ releases greater than 3.0.3.
    </para>
  </answer>
</qandaentry>

<qandaentry xml:id="faq.predefined">
  <question xml:id="q-predefined">
    <para>
      <constant>_XOPEN_SOURCE</constant> and <constant>_GNU_SOURCE</constant> are always defined?
    </para>
  </question>

  <answer xml:id="a-predefined">
      <para>On GNU/Linux, <command>g++</command> (but not <command>gcc</command>)
         always defines the preprocessor macro
	 <constant>_GNU_SOURCE</constant>.  On Solaris, the same happens
         with <constant>_XOPEN_SOURCE</constant>.  (This is not an exhaustive list;
         other macros and other platforms are also affected.)
      </para>
      <para>These macros are typically used in C library headers, guarding new
         versions of functions from their older versions.  Historically,
	 libstdc++ needed these macros to ensure that the headers provided by
	 the C library declared all the functions that libstdc++ relies on.
	 For example, functions for working with <code>long long</code>,
	 such as <function>strtoll</function>, are needed by libstdc++ but
	 were not part of the C90 standard.
      </para>
      <para>Additionally the C++ standard requires behavior which is only
         available on certain platforms after certain macros are defined.
         Usually the issue involves I/O-related typedefs.  In order to
         ensure correctness, the compiler simply predefines those macros.
      </para>
      <para>Note that it's not enough to <literal>#define</literal> them
	 only when the library is being built (during installation).
         Much of the library exists as headers, which means that
         the macros must also be defined as your programs are parsed and
         compiled.
      </para>
      <para>To see which macros are defined, look for
         <varname>CPLUSPLUS_CPP_SPEC</varname> in
         the gcc config headers for your target (and try changing them to
         see what happens when building complicated code).  You can also run
         <command>g++ -E -dM -x c++ /dev/null</command> to display
         a list of predefined macros for any particular installation.
      </para>
      <para>This has been discussed on the mailing lists
         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://gcc.gnu.org/cgi-bin/htsearch?method=and&amp;format=builtin-long&amp;sort=score&amp;words=_XOPEN_SOURCE+Solaris">quite a bit</link>.
      </para>
      <para>This method is something of a wart.  We'd like to find a cleaner
         solution, but nobody yet has contributed the time.
      </para>

  </answer>
</qandaentry>

<qandaentry xml:id="faq.darwin_ctype">
  <question xml:id="q-darwin_ctype">
    <para>
      Mac OS X <filename class="headerfile">ctype.h</filename> is broken! How can I fix it?
    </para>
  </question>
  <answer xml:id="a-darwin_ctype">
      <note>
         <para>This answer is old and probably no longer be relevant.</para>
      </note>
      <para>
         This was a long-standing bug in the OS X support.  Fortunately, the
         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://gcc.gnu.org/ml/gcc/2002-03/msg00817.html">patch</link>
	 was quite simple, and well-known.
      </para>

  </answer>
</qandaentry>

<qandaentry xml:id="faq.threads_i386">
  <question xml:id="q-threads_i386">
    <para>
      Threading is broken on i386?
    </para>
  </question>
  <answer xml:id="a-threads_i386">
      <note>
         <para>This answer is old and probably no longer be relevant.</para>
      </note>
      <para>Support for atomic integer operations was broken on i386
         platforms.  The assembly code accidentally used opcodes that are
         only available on the i486 and later.  So if you configured GCC
         to target, for example, i386-linux, but actually used the programs
         on an i686, then you would encounter no problems.  Only when
         actually running the code on a i386 will the problem appear.
      </para>
      <para>This is fixed in 3.2.2.
      </para>

  </answer>
</qandaentry>

<qandaentry xml:id="faq.atomic_mips">
  <question xml:id="q-atomic_mips">
    <para>
      MIPS atomic operations
    </para>
  </question>
  <answer xml:id="a-atomic_mips">
    <note>
      <para>This answer is old and probably no longer be relevant.</para>
    </note>
    <para>
    The atomic locking routines for MIPS targets requires MIPS II
    and later.  A patch went in just after the 3.3 release to
    make mips* use the generic implementation instead.  You can also
    configure for mipsel-elf as a workaround.
    </para>
    <para>
    The mips*-*-linux* port continues to use the MIPS II routines, and more
    work in this area is expected.
    </para>
  </answer>
</qandaentry>

<qandaentry xml:id="faq.linux_glibc">
  <question xml:id="q-linux_glibc">
    <para>
      Recent GNU/Linux glibc required?
    </para>
  </question>
  <answer xml:id="a-linux_glibc">
      <para>When running on GNU/Linux, libstdc++ 3.2.1 (shared library version
         5.0.1) and later uses localization and formatting code from the system
         C library (glibc) version 2.2.5 which contains necessary bugfixes.
         All GNU/Linux distros make more recent versions available now.
         libstdc++ 4.6.0 and later require glibc 2.3 or later for this
         localization and formatting code.
      </para>
      <para>The guideline is simple:  the more recent the C++ library, the
         more recent the C library.  (This is also documented in the main
         GCC installation instructions.)
      </para>

  </answer>
</qandaentry>

<qandaentry xml:id="faq.freebsd_wchar">
  <question xml:id="q-freebsd_wchar">
    <para>
      Can't use <type>wchar_t</type>/<classname>wstring</classname> on FreeBSD
    </para>
  </question>
  <answer xml:id="a-freebsd_wchar">
    <note>
      <para>This answer is old and probably no longer be relevant.</para>
    </note>
    <para>
    Older versions of FreeBSD's C library do not have sufficient
    support for wide character functions, and as a result the
    libstdc++ configury decides that <type>wchar_t</type> support should be
    disabled. In addition, the libstdc++ platform checks that
    enabled <type>wchar_t</type> were quite strict, and not granular
    enough to detect when the minimal support to
    enable <type>wchar_t</type> and C++ library structures
    like <classname>wstring</classname> were present. This impacted Solaris,
    Darwin, and BSD variants, and is fixed in libstdc++ versions post 4.1.0.
    </para>
    <para>
    </para>
  </answer>
</qandaentry>

</qandadiv>


<!-- Known Bugs -->
<qandadiv xml:id="faq.known_bugs" xreflabel="Known Bugs">


<qandaentry xml:id="faq.what_works">
  <question xml:id="q-what_works">
    <para>
      What works already?
    </para>
  </question>
  <answer xml:id="a-what_works">
    <para>
    Short answer: Pretty much everything <emphasis>works</emphasis>
    except for some corner cases.  Support for localization
    in <classname>locale</classname> may be incomplete on some non-GNU
    platforms. Also dependent on the underlying platform is support
    for <type>wchar_t</type> and <type>long long</type> specializations,
    and details of thread support.
    </para>
    <para>
    Long answer: See the implementation status pages for
    <link linkend="status.iso.1998">C++98</link>,
    <link linkend="status.iso.tr1">TR1</link>,
    <link linkend="status.iso.2011">C++11</link>,
    <link linkend="status.iso.2014">C++14</link>, and
    <link linkend="status.iso.2017">C++17</link>.
    </para>
  </answer>
</qandaentry>

<qandaentry xml:id="faq.standard_bugs">
  <question xml:id="q-standard_bugs">
    <para>
      Bugs in the ISO C++ language or library specification
    </para>
  </question>
  <answer xml:id="a-standard_bugs">
    <para>
    Unfortunately, there are some.
    </para>
    <para>
    For those people who are not part of the ISO Library Group
    (i.e., nearly all of us needing to read this page in the first
    place), a public list of the library defects is occasionally
    published on <link xmlns:xlink="http://www.w3.org/1999/xlink"
    xlink:href="https://www.open-std.org/jtc1/sc22/wg21/">the WG21
    website</link>.
    Many of these issues have resulted in
    <link linkend="manual.intro.status.bugs.iso">code changes in libstdc++</link>.
    </para>
    <para>
    If you think you've discovered a new bug that is not listed,
    please post a message describing your problem to the author of
    the library issues list.
    </para>
  </answer>
</qandaentry>

<qandaentry xml:id="faq.compiler_bugs">
  <question xml:id="q-compiler_bugs">
    <para>
      Bugs in the compiler (gcc/g++) and not libstdc++
    </para>
  </question>
  <answer xml:id="a-compiler_bugs">
    <para>
    On occasion, the compiler is wrong. Please be advised that this
    happens much less often than one would think, and avoid jumping to
    conclusions.
    </para>
    <para>
    First, examine the ISO C++ standard. Second, try another compiler
    or an older version of the GNU compilers. Third, you can find more
    information on the libstdc++ and the GCC mailing lists: search
    these lists with terms describing your issue.
    </para>
    <para>
    Before reporting a bug, please examine the
    <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://gcc.gnu.org/bugs/">bugs database</link>, with the
    component set to <quote>c++</quote>.
    </para>
  </answer>
</qandaentry>

</qandadiv>

<!-- Known Non-Bugs -->
<qandadiv xml:id="faq.known_non-bugs" xreflabel="Known Non-Bugs">


<qandaentry xml:id="faq.stream_reopening_fails">
  <question xml:id="q-stream_reopening_fails">
    <para>
      Reopening a stream fails
    </para>
  </question>
  <answer xml:id="a-stream_reopening_fails">
    <note>
      <para>This answer is old and probably no longer be relevant.</para>
    </note>
    <para>
    Prior to GCC 4.0 this was one of the most-reported non-bug reports.
    Executing a sequence like this would fail:
    </para>

<programlisting>
    #include &lt;fstream&gt;
    ...
    std::fstream  fs("a_file");
    // .
    // . do things with fs...
    // .
    fs.close();
    fs.open("a_new_file");
</programlisting>

    <para>
    All operations on the re-opened <varname>fs</varname> would fail, or at
    least act very strangely, especially if <varname>fs</varname> reached the
    EOF state on the previous file.
    The original C++98 standard did not specify behavior in this case, and
    the <link linkend="manual.bugs.dr22">resolution of DR #22</link> was to
    leave the state flags unchanged on a successful call to
    <function>open()</function>.
    You had to insert a call to <function>fs.clear()</function> between the
    calls to <function>close()</function> and <function>open()</function>,
    and then everything will work as expected.
    <emphasis>Update:</emphasis> For GCC 4.0 we implemented the resolution
    of <link linkend="manual.bugs.dr409">DR #409</link> and
    <function>open()</function>
    now calls <function>clear()</function> on success.
    </para>
  </answer>
</qandaentry>

<qandaentry xml:id="faq.wefcxx_verbose">
  <question xml:id="q-wefcxx_verbose">
    <para>
      -Weffc++ complains too much
    </para>
  </question>
  <answer xml:id="a-wefcxx_verbose">
    <para>
    Many warnings are emitted when <option>-Weffc++</option> is used.  Making
    libstdc++ <option>-Weffc++</option>-clean is not a goal of the project,
    for a few reasons.  Mainly, that option tries to enforce
    object-oriented programming, while the Standard Library isn't
    necessarily trying to be OO. The option also enforces outdated guidelines
    from old editions of the books, and the advice isn't all relevant to
    modern C++ (especially C++11 and later).
    </para>
    <para>
    We do, however, try to have libstdc++ sources as clean as possible. If
    you see some simple changes that pacify <option>-Weffc++</option>
    without other drawbacks, send us a patch.
    </para>
  </answer>
</qandaentry>

<qandaentry xml:id="faq.ambiguous_overloads">
  <question xml:id="q-ambiguous_overloads">
    <para>
      Ambiguous overloads after including an old-style header
    </para>
  </question>
  <answer xml:id="a-ambiguous_overloads">
    <note>
      <para>This answer is old and probably no longer be relevant.</para>
    </note>
    <para>
    Another problem is the <literal>rel_ops</literal> namespace and the template
    comparison operator functions contained therein.  If they become
    visible in the same namespace as other comparison functions
    (e.g., <quote>using</quote> them and the
    <filename class="headerfile">&lt;iterator&gt;</filename> header),
    then you will suddenly be faced with huge numbers of ambiguity
    errors.  This was discussed on the mailing list; Nathan Myers
    <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://gcc.gnu.org/ml/libstdc++/2001-01/msg00247.html">sums
      things up here</link>.  The collisions with vector/string iterator
    types have been fixed for 3.1.
    </para>
  </answer>
</qandaentry>

<qandaentry xml:id="faq.v2_headers">
  <question xml:id="q-v2_headers">
    <para>
      The g++-3 headers are <emphasis>not ours</emphasis>
    </para>
  </question>
  <answer xml:id="a-v2_headers">
    <note>
      <para>This answer is old and probably no longer be relevant.</para>
    </note>
      <para>
	If you are using headers in
	<filename class="directory">${prefix}/include/g++-3</filename>, or if
	the installed library's name looks like
	<filename class="libraryfile">libstdc++-2.10.a</filename> or
	<filename class="libraryfile">libstdc++-libc6-2.10.so</filename>, then
	you are using the old libstdc++-v2 library, which is non-standard and
	unmaintained.  Do not report problems with -v2 to the -v3
	mailing list.
      </para>
      <para>
	For GCC versions 3.0 and 3.1 the libstdc++ header files are installed in
	<filename class="directory">${prefix}/include/g++-v3</filename>
	(see the 'v'?).  Starting with version 3.2 the headers are installed in
	<filename class="directory">${prefix}/include/c++/${version}</filename>
	as this prevents headers from previous versions being found by mistake.
      </para>

  </answer>
</qandaentry>

<qandaentry xml:id="faq.boost_concept_checks">
  <question xml:id="q-boost_concept_checks">
    <para>
      Errors about <emphasis>*Concept</emphasis> and
      <emphasis>constraints</emphasis> in the STL
    </para>
  </question>
  <answer xml:id="a-boost_concept_checks">
    <para>
    If you see compilation errors containing messages about
    <errortext>foo Concept</errortext> and something to do with a
    <errortext>constraints</errortext> member function, then most
    likely you have violated one of the requirements for types used
    during instantiation of template containers and functions.  For
    example, EqualityComparableConcept appears if your types must be
    comparable with == and you have not provided this capability (a
    typo, or wrong visibility, or you just plain forgot, etc).
    </para>
    <para>
    More information, including how to optionally enable/disable the
    checks, is available in the
    <link linkend="std.diagnostics.concept_checking">Diagnostics</link>.
    chapter of the manual.
    </para>
  </answer>
</qandaentry>

<qandaentry xml:id="faq.dlopen_crash">
  <question xml:id="q-dlopen_crash">
    <para>
      Program crashes when using library code in a
      dynamically-loaded library
    </para>
  </question>
  <answer xml:id="a-dlopen_crash">
    <para>
    If you are using the C++ library across dynamically-loaded
    objects, make certain that you are passing the correct options
    when compiling and linking:
    </para>

    <literallayout class="normal">
    Compile your library components:
    <command>g++ -fPIC -c a.cc</command>
    <command>g++ -fPIC -c b.cc</command>
    ...
    <command>g++ -fPIC -c z.cc</command>

    Create your library:
    <command>g++ -fPIC -shared -rdynamic -o libfoo.so a.o b.o ... z.o</command>

    Link the executable:
    <command>g++ -fPIC -rdynamic -o foo ... -L. -lfoo -ldl</command>
    </literallayout>
  </answer>
</qandaentry>

<qandaentry xml:id="faq.memory_leaks">
  <question xml:id="q-memory_leaks">
    <para>
      <quote>Memory leaks</quote> in libstdc++
    </para>
  </question>
  <answer xml:id="a-memory_leaks">
    <para>
    Since GCC 5.1.0, libstdc++ automatically allocates a pool
    of a few dozen kilobytes on startup. This pool is used to ensure it's
    possible to throw exceptions (such as <classname>bad_alloc</classname>)
    even when <code>malloc</code> is unable to allocate any more memory.
    With some versions of <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://valgrind.org"><command>valgrind</command></link>
    this pool will be shown as "still reachable" when the process exits, e.g.
    <code>still reachable: 72,704 bytes in 1 blocks</code>.
    This memory is not a leak, because it's still in use by libstdc++,
    and the memory will be returned to the OS when the process exits.
    Later versions of <command>valgrind</command> know how to free this
    pool as the process exits, and so won't show any "still reachable" memory.
    </para>
    <para>
    In the past, a few people reported that the standard containers appear
    to leak memory when tested with memory checkers such as
    <command>valgrind</command>.
    Under some (non-default) configurations the library's allocators keep
    free memory in a
    pool for later reuse, rather than deallocating it with <code>delete</code>
    Although this memory is always reachable by the library and is never
    lost, memory debugging tools can report it as a leak.  If you
    want to test the library for memory leaks please read
    <link linkend="debug.memory">Tips for memory leak hunting</link>
    first.
    </para>
  </answer>
</qandaentry>

<qandaentry xml:id="faq.list_size_on">
  <question xml:id="q-list_size_on">
    <para>
      <code>list::size()</code> is O(n)!
    </para>
  </question>
  <answer xml:id="a-list_size_on">
    <para>
    See
    the <link linkend="std.containers">Containers</link>
    chapter.
    </para>
  </answer>
</qandaentry>

<qandaentry xml:id="faq.easy_to_fix">
  <question xml:id="q-easy_to_fix">
    <para>
      Aw, that's easy to fix!
    </para>
  </question>
  <answer xml:id="a-easy_to_fix">
    <para>
    If you have found a bug in the library and you think you have
    a working fix, then send it in!  The main GCC site has a page
    on <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://gcc.gnu.org/contribute.html">submitting
    patches</link> that covers the procedure, but for libstdc++ you
    should also send the patch to our mailing list in addition to
    the GCC patches mailing list.  The libstdc++
    <link linkend="appendix.contrib">contributors' page</link>
    also talks about how to submit patches.
    </para>
    <para>
    In addition to the description, the patch, and the ChangeLog
    entry, it is a Good Thing if you can additionally create a small
    test program to test for the presence of the bug that your patch
    fixes.  Bugs have a way of being reintroduced; if an old bug
    creeps back in, it will be caught immediately by the testsuite -
    but only if such a test exists.
    </para>
  </answer>
</qandaentry>

</qandadiv>


<!-- Miscellaneous -->
<qandadiv xml:id="faq.misc" xreflabel="Miscellaneous">


<qandaentry xml:id="faq.iterator_as_pod">
  <question xml:id="faq.iterator_as_pod_q">
    <para>
      <classname>string::iterator</classname> is not <code>char*</code>;
      <classname>vector&lt;T&gt;::iterator</classname> is not <code>T*</code>
    </para>
  </question>
  <answer xml:id="faq.iterator_as_pod_a">
    <para>
    If you have code that depends on container&lt;T&gt; iterators
    being implemented as pointer-to-T, your code is broken. It's
    considered a feature, not a bug, that libstdc++ points this out.
    </para>
    <para>
    While there are arguments for iterators to be implemented in
    that manner, A) they aren't very good ones in the long term,
    and B) they were never guaranteed by the Standard anyway.  The
    type-safety achieved by making iterators a real class rather
    than a typedef for <type>T*</type> outweighs nearly all opposing
    arguments.
    </para>
    <para>
    Code which does assume that a vector/string iterator <varname>i</varname>
    is a pointer can often be fixed by changing <varname>i</varname> in
    certain expressions to <varname>&amp;*i</varname>.
    </para>
  </answer>
</qandaentry>

<qandaentry xml:id="faq.what_is_next">
  <question xml:id="q-what_is_next">
    <para>
      What's next after libstdc++?
    </para>
  </question>
  <answer xml:id="a-what_is_next">
      <para>
	The goal of libstdc++ is to produce a
	fully-compliant, fully-portable Standard Library.
	While the C++ Standard continues to evolve the libstdc++ will
        continue to track it.
      </para>
  </answer>
</qandaentry>

<qandaentry xml:id="faq.sgi_stl">
  <question xml:id="q-sgi_stl">
    <para>
      What about the STL from SGI?
    </para>
  </question>
  <answer xml:id="a-sgi_stl">
    <para>
    The STL (Standard Template Library) was the inspiration for large chunks
    of the C++ Standard Library, but the terms are not interchangeable and
    they don't mean the same thing. The C++ Standard Library includes lots of
    things that didn't come from the STL, and some of them aren't even
    templates, such as <classname>std::locale</classname> and
    <classname>std::thread</classname>.
    </para>
    <para>
    Libstdc++-v3 incorporates a lot of code from
    <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://web.archive.org/web/20171225062613/http://www.sgi.com/tech/stl/">the SGI STL</link>
    (the final merge was from
    <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://web.archive.org/web/20171206110416/http://www.sgi.com/tech/stl/whats_new.html">release 3.3</link>).
    The code in libstdc++ contains many fixes and changes compared to the
    original SGI code.
    </para>
    <para>
    In particular, <classname>string</classname> is not from SGI and makes no
    use of their "rope" class (although that is included as an optional
    extension), neither is <classname>valarray</classname> nor some others.
    Classes like <classname>vector&lt;&gt;</classname> were from SGI, but have
    been extensively modified.
    </para>
    <para>
    More information on the evolution of libstdc++ can be found at the
    <link linkend="appendix.porting.api">API
    evolution</link>
    and <link linkend="manual.appendix.porting.backwards">backwards
    compatibility</link> documentation.
    </para>
    <para>
    The <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://web.archive.org/web/20171104092813/http://www.sgi.com/tech/stl/FAQ.html">FAQ</link>
    for SGI's STL is still recommended reading.
    </para>
  </answer>
</qandaentry>

<qandaentry xml:id="faq.extensions_and_backwards_compat">
  <question xml:id="q-extensions_and_backwards_compat">
    <para>
      Extensions and Backward Compatibility
    </para>
  </question>
  <answer xml:id="a-extensions_and_backwards_compat">
    <para>
      See the <link linkend="manual.appendix.porting.backwards">link</link> on backwards compatibility and <link linkend="appendix.porting.api">link</link> on evolution.
    </para>
  </answer>
</qandaentry>

<qandaentry xml:id="faq.tr1_support">
  <question xml:id="q-tr1_support">
    <para>
      Does libstdc++ support TR1?
    </para>
  </question>
  <answer xml:id="a-tr1_support">
    <para>
    Yes.
    </para>
    <para>
    The C++ Standard Library
    <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1836.pdf">
    Technical Report 1</link> added many new features to the library.
    </para>
    <para>
    The implementation status of TR1 in libstdc++ can be tracked
    <link linkend="status.iso.tr1">on the TR1 status page</link>.
    </para>
    <para>
    New code should probably not use TR1, because almost everything in it has
    been added to the main C++ Standard Library (usually with significant
    improvements).
    The TR1 implementation in libstdc++ is no longer actively maintained.
    </para>
  </answer>
</qandaentry>

<qandaentry xml:id="faq.get_iso_cxx">
  <question xml:id="q-get_iso_cxx">
    <para>How do I get a copy of the ISO C++ Standard?
    </para>
  </question>
  <answer xml:id="a-get_iso_cxx">
    <para>
    Please refer to the <link linkend="appendix.contrib">Contributing</link>
    section in our manual.
    </para>
  </answer>
</qandaentry>

<qandaentry xml:id="faq.what_is_abi">
  <question xml:id="q-what_is_abi">
    <para>
      What's an ABI and why is it so messy?
    </para>
  </question>
  <answer xml:id="a-what_is_abi">
    <para>
    <acronym>ABI</acronym> stands for <quote>Application Binary
    Interface</quote>.  Conventionally, it refers to a great
    mass of details about how arguments are arranged on the call
    stack and/or in registers, and how various types are arranged
    and padded in structs.  A single CPU design may suffer
    multiple ABIs designed by different development tool vendors
    who made different choices, or even by the same vendor for
    different target applications or compiler versions.  In ideal
    circumstances the CPU designer presents one ABI and all the
    OSes and compilers use it.  In practice every ABI omits
    details that compiler implementers (consciously or
    accidentally) must choose for themselves.
    </para>
    <para>
    That ABI definition suffices for compilers to generate code so a
    program can interact safely with an OS and its lowest-level libraries.
    Users usually want an ABI to encompass more detail, allowing libraries
    built with different compilers (or different releases of the same
    compiler!) to be linked together.  For C++, this includes many more
    details than for C, and most CPU designers (for good reasons elaborated
    below) have not stepped up to publish C++ ABIs.  Such an ABI has been
    defined for the Itanium architecture (see
    <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://itanium-cxx-abi.github.io/cxx-abi/">C++
    ABI for Itanium</link>) and that is used by G++ and other compilers
    as the de facto standard ABI on many common architectures (including x86).
    G++ can also use the ARM architecture's EABI, for embedded
    systems relying only on a <quote>free-standing implementation</quote> that
    doesn't include (much of) the standard library, and the GNU EABI for
    hosted implementations on ARM.  Those ABIs cover low-level details
    such as virtual function implementation, struct inheritance layout,
    name mangling, and exception handling.
   </para>
    <para>
    A useful C++ ABI must also incorporate many details of the standard
    library implementation.  For a C ABI, the layouts of a few structs
    (such as <type>FILE</type>, <type>stat</type>, <type>jmpbuf</type>,
    and the like) and a few macros suffice.
    For C++, the details include the complete set of names of functions
    and types used, the offsets of class members and virtual functions,
    and the actual definitions of all inlines.  C++ exposes many more
    library details to the caller than C does.  It makes defining
    a complete ABI a much bigger undertaking, and requires not just
    documenting library implementation details, but carefully designing
    those details so that future bug fixes and optimizations don't
    force breaking the ABI.
    </para>
    <para>
    There are ways to help isolate library implementation details from the
    ABI, but they trade off against speed.  Library details used in inner
    loops (e.g., <function>getchar</function>) must be exposed and frozen for
    all time, but many others may reasonably be kept hidden from user code,
    so they may later be changed.  Deciding which, and implementing
    the decisions, must happen before you can reasonably document a
    candidate C++ ABI that encompasses the standard library.
    </para>
  </answer>
</qandaentry>

<qandaentry xml:id="faq.size_equals_capacity">
  <question xml:id="q-size_equals_capacity">
    <para>
      How do I make <code>std::vector&lt;T&gt;::capacity() == std::vector&lt;T&gt;::size</code>?
    </para>
  </question>
  <answer xml:id="a-size_equals_capacity">
    <para>
    Since C++11 just call the <function>shrink_to_fit()</function> member
    function.
    </para>
    <para>
    Before C++11, the standard idiom for deallocating a
    <classname>vector&lt;T&gt;</classname>'s
    unused memory was to create a temporary copy of the vector and swap their
    contents, e.g. for <classname>vector&lt;T&gt; v</classname>
    </para>
    <literallayout class="normal">
     std::vector&lt;T&gt;(v).swap(v);
    </literallayout>
    <para>
    The copy will take O(n) time and the swap is constant time.
    </para>
    <para>
    See <link linkend="strings.string.shrink">Shrink-to-fit
    strings</link> for a similar solution for strings.
    </para>
  </answer>
</qandaentry>

</qandadiv>


<!-- FAQ ends here -->
</qandaset>

</article>

</book>
