.\" t
.\" This man page is released under the GPL as part of libstdc++.
.TH C++Intro 3 "20 May 2004" "GNU libstdc++" "Standard C++ Library"
.SH NAME
C++Intro \- Introduction to the GNU libstdc++ man pages
.SH DESCRIPTION
This man page serves as a brief introduction to the GNU implementation of
the Standard C++ Library.  For a better introduction and more complete
documentation, see the
.B libstdc++
homepage listed at the end.
.P
All standard library entities are declared within
.I namespace std
and have manual entries beginning with "std::".  For example, to see
documentation of the template class
.I std::vector
one would use "man std::vector".  Some entities do not have a separate man
page; for those see the main listing in "man Namespace_std".
.P
All the man pages are automatically generated by Doxygen.  For more
information on this tool, see the HTML counterpart to these man pages.
.P
Some man pages do not correspond to individual classes or functions.  Rather
they describe categories of the Standard Library.  (For a more thorough
introduction to the various categories, consult a text such as Josuttis'
or Austern's.)  These category pages are:
.P
.\" These are separated by ONE TAB.  Nothing else.  I don't like it either.
.TS
lB l.
C++Intro	This page.
Namespace_std	A listing of the contents of std::.
Namespace___gnu_cxx	A listing of the contents of __gnu_cxx::.
Containers	An introduction to container classes.
Sequences	Linear containers.
Assoc_containers	Key-based containers.
Iterator_types	Programatically distinguishing iterators/pointers.
Intro_functors	An introduction to function objects, or functors.
Arithmetic_functors	Functors for basic math.
Binder_functors	Functors which "remember" an argument.
Comparison_functors	Functors wrapping built-in comparisons.
Func_ptr_functors	Functors for use with pointers to functions.
Logical_functors	Functors wrapping the Boolean operations.
Member_ptr_functor	Functors for use with pointers to members.
Negation_functors	Functors which negate their contents.
SGIextensions	A list of the extensions from the SGI STL subset.

.TE
.P
The HTML documentation typically goes into much more depth.
.SH FILES
Lots!
.SS Standard Headers
These headers will be found automatically, unless you instruct the compiler
otherwise.
.TS
lB lB lB lB.
<algorithm>  <csignal>     <iomanip>   <ostream>
<bitset>     <cstdarg>     <ios>       <queue>
<cassert>    <cstddef>     <iosfwd>    <set>
<cctype>     <cstdio>      <iostream>  <sstream>
<cerrno>     <cstdlib>     <istream>   <stack>
<cfloat>     <cstring>     <iterator>  <stdexcept>
<ciso>646    <ctime>       <limits>    <streambuf>
<climits>    <cwchar>      <list>      <string>
<clocale>    <cwctype>     <locale>    <utility>
<cmath>      <deque>       <map>       <valarray>
<complex>    <fstream>     <memory>    <vector>
<csetjmp>    <functional>  <numeric>
.TE
.SS Backwards-Compatibility Headers
For GCC 3.0 these headers will be found automatically, unless you instruct
the compiler otherwise.  You should not depend on this, instead you should
read FAQ 5.4 and use a
.B backward/
prefix.
.TS
lB lB lB lB.
<strstream>
.TE
.SS Extension Headers
These headers will only be found automatically if you include the leading
.B ext/
in the name.  Otherwise you need to read FAQ 5.4.
.\" Easy way to generate these columns of headers is to use GNU ls(1):
.\" ls -w 40 file1 file2... | sed 's=[a-z_][a-z_]*=<ext/&>=g'
.TS
lB lB.
<ext/algorithm>            <ext/numeric>            
<ext/functional>           <ext/iterator>
<ext/slist>                <ext/rb_tree>  
<ext/rope>                 <ext/memory>               
<ext/bitmap_allocator.h>   <ext/debug_allocator.h>    
<ext/malloc_allocator.h>   <ext/mt_allocator.h>     
<ext/pool_allocator.h>     <ext/pod_char_traits.h>    
<ext/stdio_filebuf.h>      <ext/stdio_sync_filebuf.h>
.TE
.SS Libraries
.TP
.I libstdc++.a
The library implementation in static archive form.  If you did not configure
libstdc++ to use shared libraries, this will always be used.  Otherwise
it will only be used if the user requests it.
.TP
.I libsupc++.a
This library contains C++ language support routines.  Usually you will never
need to know about it, but it can be useful.  See FAQ 2.5.
.TP
.I libstdc++.so[.N]
The library implementation in shared object form.  This will be used in
preference to the static archive form by default.  N will be a number equal
to or greater than 3.  If N is in the 2.x series, then you are looking at
the old libstdc++-v2 library, which we do not maintain.
.TP
.I libstdc++.la
.TP
.I libsupc++.la
These are Libtool library files, and should only be used when working with
that tool.
.SH CONFORMING TO
Almost conforming to
.BI "International Standard ISO/IEC 14882:1998(E), " "Programming Languages --- C++"
(aka the C++ standard), in addition to corrections proposed by the Library
Working Group,
.SM JTC1/SC22/WG21.
.SH SEE ALSO
.UR
http://gcc.gnu.org/libstdc++/
.UE
for the Frequently Asked Questions, online documentation, and much, much more!
.\" vim:ts=8:noet:
