user.cfg.in: Minor addition.

2001-05-30  Phil Edwards  <pme@sources.redhat.com>

	* docs/doxygen/user.cfg.in:  Minor addition.
	* docs/html/documentation.html:  Reorganize.  Put most-looked-at
	stuff first.
	* docs/html/install.html:  Update for 3.0.  HTML fixups.
	* docs/html/17_intro/howto.html:  Likewise.
	* docs/html/18_support/howto.html:  Likewise.
	* docs/html/19_diagnostics/howto.html:  Likewise.
	* docs/html/20_util/howto.html:  Likewise.
	* docs/html/23_containers/howto.html:  Likewise.
	* docs/html/24_iterators/howto.html:  Likewise.  More notes.
	* docs/html/25_algorithms/howto.html:  Likewise.
	* docs/html/26_numerics/howto.html:  Likewise.  More notes.
	* docs/html/27_io/howto.html:  Likewise.
	* docs/html/ext/howto.html:  Likewise.
	* docs/html/faq/index.html:  Likewise.
	* docs/html/faq/index.txt:  Regenerate.
	* docs/html/27_io/iostreams_hierarchy.pdf:  Remove in favor of
	Doxygen-created documentation.

From-SVN: r42723
This commit is contained in:
Phil Edwards 2001-05-30 21:55:05 +00:00
parent 932c1783cb
commit 462b73969e
17 changed files with 431 additions and 438 deletions

View File

@ -1,3 +1,24 @@
2001-05-30 Phil Edwards <pme@sources.redhat.com>
* docs/doxygen/user.cfg.in: Minor addition.
* docs/html/documentation.html: Reorganize. Put most-looked-at
stuff first.
* docs/html/install.html: Update for 3.0. HTML fixups.
* docs/html/17_intro/howto.html: Likewise.
* docs/html/18_support/howto.html: Likewise.
* docs/html/19_diagnostics/howto.html: Likewise.
* docs/html/20_util/howto.html: Likewise.
* docs/html/23_containers/howto.html: Likewise.
* docs/html/24_iterators/howto.html: Likewise. More notes.
* docs/html/25_algorithms/howto.html: Likewise.
* docs/html/26_numerics/howto.html: Likewise. More notes.
* docs/html/27_io/howto.html: Likewise.
* docs/html/ext/howto.html: Likewise.
* docs/html/faq/index.html: Likewise.
* docs/html/faq/index.txt: Regenerate.
* docs/html/27_io/iostreams_hierarchy.pdf: Remove in favor of
Doxygen-created documentation.
2001-05-30 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
* testsuite/lib/libstdc++-v3-dg.exp (libstdc++-v3-init): Use

View File

@ -20,7 +20,7 @@
# The PROJECT_NAME tag is a single word (or a sequence of words surrounded
# by quotes) that should identify the project.
PROJECT_NAME = libstdc++-v3
PROJECT_NAME = "libstdc++-v3 Source"
# The PROJECT_NUMBER tag can be used to enter a project or revision number.
# This could be handy for archiving the generated documentation or

View File

@ -8,7 +8,7 @@
<META NAME="GENERATOR" CONTENT="vi and eight fingers">
<TITLE>libstdc++-v3 HOWTO: Chapter 17</TITLE>
<LINK REL=StyleSheet HREF="../lib3styles.css">
<!-- $Id: howto.html,v 1.2 2001/04/03 00:26:54 pme Exp $ -->
<!-- $Id: howto.html,v 1.3 2001/05/30 08:30:02 ljrittle Exp $ -->
</HEAD>
<BODY>
@ -125,8 +125,7 @@
<HR>
<H2><A NAME="4"><TT>&lt;foo&gt;</TT> vs <TT>&lt;foo.h&gt;</TT></A></H2>
<P>The new-style headers are fully supported in libstdc++-v3. The compiler
itself fully supports namespaces. However, at the moment, the compiler
treats std:: as the global namespace by default.
itself fully supports namespaces, including <TT>std::</TT>.
</P>
<P>For those of you new to ISO C++98, no, that isn't a typo, the headers
really have new names. Marshall Cline's C++ FAQ Lite has a good
@ -145,7 +144,7 @@
<P CLASS="fineprint"><EM>
Comments and suggestions are welcome, and may be sent to
<A HREF="mailto:libstdc++@gcc.gnu.org">the mailing list</A>.
<BR> $Id: howto.html,v 1.2 2001/04/03 00:26:54 pme Exp $
<BR> $Id: howto.html,v 1.3 2001/05/30 08:30:02 ljrittle Exp $
</EM></P>

View File

@ -8,7 +8,7 @@
<META NAME="GENERATOR" CONTENT="vi and eight fingers">
<TITLE>libstdc++-v3 HOWTO: Chapter 18</TITLE>
<LINK REL=StyleSheet HREF="../lib3styles.css">
<!-- $Id: howto.html,v 1.1 2000/12/10 04:04:54 pme Exp $ -->
<!-- $Id: howto.html,v 1.2 2001/04/03 00:26:55 pme Exp $ -->
</HEAD>
<BODY>
@ -186,6 +186,11 @@
out of them, Bad Things happen.
</OL>
</P>
<P>Note also that <TT>atexit()</TT> is only required to store 32
functions, and the compiler/library might already be using some of
those slots. If you think you may run out, we recommend using
the xatexit/xexit combination from libiberty, which has no such limit.
</P>
<P>Return <A HREF="#top">to top of page</A> or
<A HREF="../faq/index.html">to the FAQ</A>.
</P>
@ -260,7 +265,7 @@
<P CLASS="fineprint"><EM>
Comments and suggestions are welcome, and may be sent to
<A HREF="mailto:libstdc++@gcc.gnu.org">the mailing list</A>.
<BR> $Id: howto.html,v 1.1 2000/12/10 04:04:54 pme Exp $
<BR> $Id: howto.html,v 1.2 2001/04/03 00:26:55 pme Exp $
</EM></P>

View File

@ -8,7 +8,7 @@
<META NAME="GENERATOR" CONTENT="vi and eight fingers">
<TITLE>libstdc++-v3 HOWTO: Chapter 19</TITLE>
<LINK REL=StyleSheet HREF="../lib3styles.css">
<!-- $Id: howto.html,v 1.2 2001/03/25 00:01:56 pme Exp $ -->
<!-- $Id: howto.html,v 1.3 2001/04/03 00:26:55 pme Exp $ -->
</HEAD>
<BODY>
@ -93,16 +93,8 @@
object file. The checks are also cleaner and easier to read and
understand.
</P>
<P>Concept checking can be disabled when you build your code, for example,
to save space during a production build. Just define (via -D or
#define) any of the macros
<TT>_GLIBCPP_NO_CONCEPT_CHECKS (yes, with the leading underscore),
<TT>_STL_NO_CONCEPT_CHECKS</TT> (also with the leading underscore),
or <TT>NDEBUG</TT>. The first macro is specifically for this
feature, the second is the disabling macro for the replaced SGI
version (some code may assume SGI's version is in use), and the third
is the usual macro to disable <TT>assert()</TT>, which is often turned
off for production builds.
<P>Right now they are off by default. More will be added once
GCC 3.0 is released and we have time to revisit this topic.
</P>
<P>Return <A HREF="#top">to top of page</A> or
@ -116,7 +108,7 @@
<P CLASS="fineprint"><EM>
Comments and suggestions are welcome, and may be sent to
<A HREF="mailto:libstdc++@gcc.gnu.org">the mailing list</A>.
<BR> $Id: howto.html,v 1.2 2001/03/25 00:01:56 pme Exp $
<BR> $Id: howto.html,v 1.3 2001/04/03 00:26:55 pme Exp $
</EM></P>

View File

@ -8,7 +8,7 @@
<META NAME="GENERATOR" CONTENT="vi and eight fingers">
<TITLE>libstdc++-v3 HOWTO: Chapter 20</TITLE>
<LINK REL=StyleSheet HREF="../lib3styles.css">
<!-- $Id: howto.html,v 1.2 2001/01/23 17:02:27 pme Exp $ -->
<!-- $Id: howto.html,v 1.3 2001/04/03 00:26:55 pme Exp $ -->
</HEAD>
<BODY>
@ -96,7 +96,7 @@
<PRE>
struct My_Type
{
My_Type (My_Type const&amp;);
My_Type (My_Type const&amp;);
};
</PRE>
Note the const keyword; the object being copied shouldn't change.
@ -120,23 +120,10 @@
void f()
{
std::vector&lt; std::auto_ptr&lt;int&gt; &gt; vec_ap_int;
std::vector&lt; std::auto_ptr&lt;int&gt; &gt; vec_ap_int;
}
</PRE>
Should you try this, you will see an error along the lines of the
following (look through the ugly line-wrapping):
<PRE>
/installdir/include/g++-v3/bits/concept_checks.h: In
static member function `static _Type
<B>_STL_ERROR::__const_parameter_required_for_copy_constructor</B>(_Type, const
_Type&amp;) [with _Type = std::auto_ptr&lt;int&gt;]':
/installdir/include/g++-v3/bits/concept_checks.h:383: passing
`const std::auto_ptr&lt;int&gt;' as `this' argument of
`std::auto_ptr&lt;_Tp&gt;::operator std::auto_ptr_ref&lt;_Tp1&gt;()
[with _Tp1 = int, _Tp = int]' discards qualifiers
</PRE>
See the highlighted error? It starts with a message in all caps
to get your attention.
Should you try this with the checks enabled, you will see an error.
</P>
<P>Return <A HREF="#top">to top of page</A> or
<A HREF="../faq/index.html">to the FAQ</A>.
@ -213,7 +200,7 @@
<P CLASS="fineprint"><EM>
Comments and suggestions are welcome, and may be sent to
<A HREF="mailto:libstdc++@gcc.gnu.org">the mailing list</A>.
<BR> $Id: howto.html,v 1.2 2001/01/23 17:02:27 pme Exp $
<BR> $Id: howto.html,v 1.3 2001/04/03 00:26:55 pme Exp $
</EM></P>

View File

@ -8,7 +8,7 @@
<META NAME="GENERATOR" CONTENT="vi and eight fingers">
<TITLE>libstdc++-v3 HOWTO: Chapter 23</TITLE>
<LINK REL=StyleSheet HREF="../lib3styles.css">
<!-- $Id: howto.html,v 1.2 2001/04/03 00:26:55 pme Exp $ -->
<!-- $Id: howto.html,v 1.3 2001/05/30 08:30:01 ljrittle Exp $ -->
</HEAD>
<BODY>
@ -45,10 +45,8 @@
algorithms are only given endpoints to work with. For the container
classes, these are iterators (usually <TT>begin()</TT> and
<TT>end()</TT>, but not always). For builtin arrays, these are
the address of the first element and the past-the-end element.
<!-- a good explanation of the past-the-end rules is in order,
probably a link somewhere
-->
the address of the first element and the
<A HREF="../24_iterators/howto.html#2">past-the-end</A> element.
</P>
<P>Some very simple wrapper functions can hide all of that from the
rest of the code. For example, a pair of functions called
@ -86,7 +84,7 @@
</P>
<P>Second, the line
<PRE>
inline unsigned int lengthof (T (&)[sz]) { return sz; } </PRE>
inline unsigned int lengthof (T (&amp;)[sz]) { return sz; } </PRE>
looks just weird! Hint: unused parameters can be left nameless.
</P>
<P>Return <A HREF="#top">to top of page</A> or
@ -134,7 +132,7 @@
some extra space, of course. (If you plan to write code like the
incorrect example above, where the bitset is a local variable, then you
may have to talk your compiler into allowing that much stack space;
there may be zero spae overhead, but it's all allocated inside the
there may be zero space overhead, but it's all allocated inside the
object.)
</P>
<P><B>A container&lt;bool&gt;.&nbsp;&nbsp;</B> The Committee made provision
@ -239,7 +237,7 @@
<P CLASS="fineprint"><EM>
Comments and suggestions are welcome, and may be sent to
<A HREF="mailto:libstdc++@gcc.gnu.org">the mailing list</A>.
<BR> $Id: howto.html,v 1.2 2001/04/03 00:26:55 pme Exp $
<BR> $Id: howto.html,v 1.3 2001/05/30 08:30:01 ljrittle Exp $
</EM></P>

View File

@ -8,7 +8,7 @@
<META NAME="GENERATOR" CONTENT="vi and eight fingers">
<TITLE>libstdc++-v3 HOWTO: Chapter 24</TITLE>
<LINK REL=StyleSheet HREF="../lib3styles.css">
<!-- $Id: howto.html,v 1.1 2000/12/10 04:04:55 pme Exp $ -->
<!-- $Id: howto.html,v 1.2 2001/04/03 00:26:56 pme Exp $ -->
</HEAD>
<BODY>
@ -70,7 +70,98 @@
<HR>
<H2><A NAME="2">It ends <EM>where?</EM></A></H2>
<P>Blah.
<P>This starts off sounding complicated, but is actually very easy,
especially towards the end. Trust me.
</P>
<P>Beginners usually have a little trouble understand the whole
'past-the-end' thing, until they remember their early algebra classes
(see, they </EM>told</EM> you that stuff would come in handy!) and
the concept of half-open ranges.
</P>
<P>First, some history, and a reminder of some of the funkier rules in
C and C++ for builtin arrays. The following rules have always been
true for both languages:
<OL>
<LI>You can point anywhere in the array, <EM>or to the first element
past the end of the array</EM>. A pointer that points to one
past the end of the array is guaranteed to be as unique as a
pointer to somewhere inside the array, so that you can compare
such pointers safely.
<LI>You can only dereference a pointer that points into an array.
If your array pointer points outside the array -- even to just
one past the end -- and you dereference it, Bad Things happen.
<LI>Strictly speaking, simply pointing anywhere else invokes
undefined behavior. Most programs won't puke until such a
pointer is actually dereferenced, but the standards leave that
up to the platform.
</OL>
The reason this past-the-end addressing was allowed is to make it
easy to write a loop to go over an entire array, e.g.,
while (*d++ = *s++);.
</P>
<P>So, when you think of two pointers delimiting an array, don't think
of them as indexing 0 through n-1. Think of them as <EM>boundary
markers</EM>:
<PRE>
beginning end
| |
| | This is bad. Always having to
| | remember to add or subtract one.
| | Off-by-one bugs very common here.
V V
array of N elements
|---|---|--...--|---|---|
| 0 | 1 | ... |N-2|N-1|
|---|---|--...--|---|---|
^ ^
| |
| | This is good. This is safe. This
| | is guaranteed to work. Just don't
| | dereference 'end'.
beginning end
</PRE>
See? Everything between the boundary markers is part of the array.
Simple.
</P>
<P>Now think back to your junior-high school algebra course, when you
were learning how to draw graphs. Remember that a graph terminating
with a solid dot meant, &quot;Everything up through this point,&quot;
and a graph terminating with an open dot meant, &quot;Everything up
to, but not including, this point,&quot; respectively called closed
and open ranges? Remember how closed ranges were written with
brackets, <EM>[a,b]</EM>, and open ranges were written with parentheses,
<EM>(a,b)</EM>?
</P>
<P>The boundary markers for arrays describe a <EM>half-open range</EM>,
starting with (and including) the first element, and ending with (but
not including) the last element: <EM>[beginning,end)</EM>. See, I
told you it would be simple in the end.
</P>
<P>Iterators, and everything working with iterators, follows this same
time-honored tradition. A container's <TT>begin()</TT> method returns
an iterator referring to the first element, and its <TT>end()</TT>
method returns a past-the-end iterator, which is guaranteed to be
unique and comparable against any other iterator pointing into the
middle of the container.
</P>
<P>Container constructors, container methods, and algorithms, all take
pairs of iterators describing a range of values on which to operate.
All of these ranges are half-open ranges, so you pass the beginning
iterator as the starting parameter, and the one-past-the-end iterator
as the finishing parameter.
</P>
<P>This generalizes very well. You can operate on sub-ranges quite
easily this way; functions accepting a <EM>[first,last)</EM> range
don't know or care whether they are the boundaries of an entire {array,
sequence, container, whatever}, or whether they only enclose a few
elements from the center. This approach also makes zero-length
sequences very simple to recognize: if the two endpoints compare
equal, then the {array, sequence, container, whatever} is empty.
</P>
<P>Just don't dereference <TT>end()</TT>.
</P>
<P>Return <A HREF="#top">to top of page</A> or
<A HREF="../faq/index.html">to the FAQ</A>.
@ -85,7 +176,7 @@
<P CLASS="fineprint"><EM>
Comments and suggestions are welcome, and may be sent to
<A HREF="mailto:libstdc++@gcc.gnu.org">the mailing list</A>.
<BR> $Id: howto.html,v 1.1 2000/12/10 04:04:55 pme Exp $
<BR> $Id: howto.html,v 1.2 2001/04/03 00:26:56 pme Exp $
</EM></P>

View File

@ -8,7 +8,7 @@
<META NAME="GENERATOR" CONTENT="vi and eight fingers">
<TITLE>libstdc++-v3 HOWTO: Chapter 25</TITLE>
<LINK REL=StyleSheet HREF="../lib3styles.css">
<!-- $Id: howto.html,v 1.1 2000/12/10 04:04:55 pme Exp $ -->
<!-- $Id: howto.html,v 1.2 2001/04/03 00:26:56 pme Exp $ -->
</HEAD>
<BODY>
@ -37,12 +37,12 @@
important things:
<OL>
<LI>Anything that behaves like an iterator can be used in one of
these algorithms. Raw pointers make great candidates, thus
built-in arrays are fine containers. So do your own iterators.
these algorithms. Raw pointers make great candidates, thus
built-in arrays are fine containers. So do your own iterators.
<LI>The algorithms do not (and cannot) affect the container as a
whole; only the things between the two iterator endpoints. If
you pass a range of iterators only enclosing the middle third of
a container, then anything outside that range is inviolate.
whole; only the things between the two iterator endpoints. If
you pass a range of iterators only enclosing the middle third of
a container, then anything outside that range is inviolate.
</OL>
</P>
<P>Even strings can be fed through the algorithms here, although the
@ -59,7 +59,7 @@
<P>The single thing that trips people up the most is the definition of
<EM>range</EM> used with iterators; the famous
&quot;past-the-end&quot; rule that everybody loves to hate. The
<A HREF="../24_iterators/howto.html">iterators chapter</A> of this
<A HREF="../24_iterators/howto.html#2">iterators chapter</A> of this
document has a complete explanation of this simple rule that seems to
cause so much confusion. Once you get <EM>range</EM> into your head
(it's not that hard, honest!), then the algorithms are a cakewalk.
@ -87,7 +87,7 @@
<P CLASS="fineprint"><EM>
Comments and suggestions are welcome, and may be sent to
<A HREF="mailto:libstdc++@gcc.gnu.org">the mailing list</A>.
<BR> $Id: howto.html,v 1.1 2000/12/10 04:04:55 pme Exp $
<BR> $Id: howto.html,v 1.2 2001/04/03 00:26:56 pme Exp $
</EM></P>

View File

@ -8,7 +8,7 @@
<META NAME="GENERATOR" CONTENT="vi and eight fingers">
<TITLE>libstdc++-v3 HOWTO: Chapter 26</TITLE>
<LINK REL=StyleSheet HREF="../lib3styles.css">
<!-- $Id: howto.html,v 1.1 2000/12/10 04:04:56 pme Exp $ -->
<!-- $Id: howto.html,v 1.2 2001/04/03 00:26:56 pme Exp $ -->
</HEAD>
<BODY>
@ -35,6 +35,7 @@
<LI><A HREF="#1">Complex Number Processing</A>
<LI><A HREF="#2">Array Processing</A>
<LI><A HREF="#3">Numerical Functions</A>
<LI><A HREF="#4">C99</A>
</UL>
<HR>
@ -125,6 +126,27 @@
<A HREF="../faq/index.html">to the FAQ</A>.
</P>
<HR>
<H2><A NAME="4">C99</A></H2>
<P>In addition to the other topics on this page, we'll note here some
of the C99 features that appear in libstdc++-v3.
</P>
<P>The C99 features depend on the <TT>--enable-c99</TT> configure flag.
This flag is already on by default, but it can be disabled by the
user. Also, the configuration machinery will disable it if the
neccessary support for C99 (e.g., header files) cannot be found.
</P>
<P>As of GCC 3.0, C99 support includes classification functions
such as <TT>isnormal</TT>, <TT>isgreater</TT>, <TT>isnan</TT>, etc.
The functions used for 'long long' support such as <TT>strtoll</TT>
are supported, as is the <TT>lldiv_t</TT> typedef. Also supported
are the wide character functions using 'long long', like
<TT>wcstoll</TT>.
</P>
<P>Return <A HREF="#top">to top of page</A> or
<A HREF="../faq/index.html">to the FAQ</A>.
</P>
<!-- ####################################################### -->
@ -133,7 +155,7 @@
<P CLASS="fineprint"><EM>
Comments and suggestions are welcome, and may be sent to
<A HREF="mailto:libstdc++@gcc.gnu.org">the mailing list</A>.
<BR> $Id: howto.html,v 1.1 2000/12/10 04:04:56 pme Exp $
<BR> $Id: howto.html,v 1.2 2001/04/03 00:26:56 pme Exp $
</EM></P>

View File

@ -8,7 +8,7 @@
<META NAME="GENERATOR" CONTENT="vi and eight fingers">
<TITLE>libstdc++-v3 HOWTO: Chapter 27</TITLE>
<LINK REL=StyleSheet HREF="../lib3styles.css">
<!-- $Id: howto.html,v 1.3 2001/02/07 00:03:21 pme Exp $ -->
<!-- $Id: howto.html,v 1.4 2001/04/03 00:26:56 pme Exp $ -->
</HEAD>
<BODY>
@ -26,7 +26,6 @@
<LI><A HREF="#1">Copying a file</A>
<LI><A HREF="#2">The buffering is screwing up my program!</A>
<LI><A HREF="#3">Binary I/O</A>
<LI><A HREF="#4">Iostreams class hierarchy diagram</A>
<LI><A HREF="#5">What is this &lt;sstream&gt;/stringstreams thing?</A>
<LI><A HREF="#6">Deriving a stream buffer</A>
<LI><A HREF="#7">More on binary I/O</A>
@ -284,14 +283,6 @@
made are good ones.)
</P>
<HR>
<H2><A NAME="4">Iostreams class hierarchy diagram</A></H2>
<P>The <A HREF="iostreams_hierarchy.pdf">diagram</A> is in PDF. Rumor
has it that once Benjamin Kosnik has been dead for a few decades,
this work of his will be hung next to the Mona Lisa in the
<A HREF="http://www.louvre.fr/">Musee du Louvre</A>.
</P>
<HR>
<H2><A NAME="5">What is this &lt;sstream&gt;/stringstreams thing?</A></H2>
<P>Stringstreams (defined in the header <TT>&lt;sstream&gt;</TT>)
@ -416,7 +407,7 @@
<P CLASS="fineprint"><EM>
Comments and suggestions are welcome, and may be sent to
<A HREF="mailto:libstdc++@gcc.gnu.org">the mailing list</A>.
<BR> $Id: howto.html,v 1.3 2001/02/07 00:03:21 pme Exp $
<BR> $Id: howto.html,v 1.4 2001/04/03 00:26:56 pme Exp $
</EM></P>

File diff suppressed because one or more lines are too long

View File

@ -3,7 +3,7 @@
<META NAME="KEYWORDS" CONTENT="libstdc++, homepage, home, g++, libg++, STL">
<TITLE>Standard C++ Library v3</TITLE>
<LINK REL=StyleSheet HREF="lib3styles.css">
<!-- $Id: documentation.html,v 1.2 2001/05/19 20:27:36 pme Exp $ -->
<!-- $Id: documentation.html,v 1.3 2001/05/23 02:00:05 pme Exp $ -->
</HEAD>
<BODY>
@ -11,15 +11,42 @@
<P><B>All of these documents</B> (in fact, this entire homepage set) are
bundled with the library source, under the <TT>docs</TT> subdirectory,
for releases and snapshots. The sole exception is the
<A HREF="#4">automatically-generated source documentation</A>,
available separately.
automatically-generated source documentation, available separately.
</P>
<HR>
<H2><A NAME="4">Source Documentation</A></H2>
<P>In addition to the distribution documentation (these pages), we also
have a set of HTML documents generated from the sources themselves,
using the Doxygen tool. These are useful for examining the signatures
of public member functions for the library classes, etc.
</P>
<P>
The latest collection is <TT>libstdc++-doxygen-20010501.tar.gz</TT> (3.7MB),
<A HREF="libstdc++-doxygen-20010501/index.html">viewable online</A>.
The collection is also available in the libstdc++ snapshots directory at
<TT>&lt;URL:ftp://gcc.gnu.org/pub/gcc/libstdc++/&gt;</TT>. You will
almost certainly need to use one of the
<A HREF="http://gcc.gnu.org/mirrors.html">mirror sites</A> to download
the tarball. After unpacking, simply load
libstdc++-doxygen-20010501/index.html <!-- also update this date -->
in a browser. Feedback (and additional documentation!) is welcome.
</P>
<HR>
<H2><A NAME="2">Configuring, Building, Installing</A></H2>
<UL>
<LI><A HREF="configopts.html">Configure options</A>
<LI><A HREF="install.html">Getting started: configure, build, install</A><BR>
</UL>
<HR>
<H2><A NAME="1">Introductory notes for libstdc++</A></H2>
<P>This is a short list of text files pertaining to this
implementation of ISO 14882. A brief description follows the name
of the file.
</P>
<P>
<UL>
<LI><A HREF="17_intro/BADNAMES">BADNAMES</A>
- names to avoid because of potential collisions
@ -35,8 +62,8 @@
<LI><A HREF="17_intro/HEADER_POLICY">HEADER_POLICY</A>
- header naming and sub-include structure
<LI><A HREF="17_intro/PROBLEMS">PROBLEMS</A>
<!-- Linking to "../README" doesn't work; we are at the top level
of the web pages. Punt. -->
<!-- Linking to "../README" doesn't work; we are at the top level
of the web pages. Punt. -->
<LI>README - directory structure
<LI><A HREF="17_intro/RELEASE-NOTES">RELEASE-NOTES</A>
- instructions for building, using
@ -46,13 +73,7 @@
<LI><A HREF="17_intro/contribute.html">Contributor checklist</A>
<LI><A HREF="17_intro/libstdc++-assign.txt">Copyright assignment form for libstdc++-v3</A>
</UL>
<HR>
<H2><A NAME="2">Configuring, Building, Installing</A></H2>
<UL>
<LI><A HREF="configopts.html">Configure options</A>
<LI><A HREF="install.html">Getting started: configure, build, install</A><BR>
</UL>
</P>
<HR>
<H2><A NAME="3">Chapter-Specific Information, Extensions, Notes and Advice</A></H2>
@ -71,27 +92,5 @@
<LI><A HREF="ext/howto.html">Extensions to the Standard Library</A>
</OL>
<HR>
<H2><A NAME="4">Source Documentation</A></H2>
<P>In addition to the distribution documentation (these pages), we also
have a set of HTML documents generated from the sources themselves,
using the Doxygen tool. These are useful for examining the signatures
of public member functions for the library classes, etc.
</P>
<P>
The latest
collection is libstdc++-doxygen-20010501.tar.gz (3.7MB), available in
the libstdc++ snapshots directory at
<TT>&lt;URL:ftp://gcc.gnu.org/pub/gcc/libstdc++/&gt;</TT>. You will
almost certainly need to use one of the
<A HREF="http://gcc.gnu.org/mirrors.html">mirror sites</A> to download
the tarball. After unpacking, simply load
libstdc++-doxygen-20010501/index.html in a browser. You can also
browse the same collection
<A HREF="libstdc++-doxygen-20010501/index.html">online</A>.
Feedback (and additional documentation!) is welcome.
</P>
</BODY>
</HTML>

View File

@ -8,7 +8,7 @@
<META NAME="GENERATOR" CONTENT="vi and eight fingers">
<TITLE>libstdc++-v3 HOWTO: Extensions</TITLE>
<LINK REL=StyleSheet HREF="../lib3styles.css">
<!-- $Id: howto.html,v 1.3 2001/04/03 00:26:56 pme Exp $ -->
<!-- $Id: howto.html,v 1.4 2001/05/02 01:39:03 pme Exp $ -->
</HEAD>
<BODY>
@ -116,14 +116,21 @@
<P>
<UL>
<LI><TT>filebuf</TT>s have another ctor with this signature:<BR>
<TT>basic_filebuf(int __fd, const char* __name, ios_base::openmode __mode);</TT>
<TT>basic_filebuf(__c_file_type*, ios_base::openmode, int_type);</TT>
<BR>This comes in very handy in a number of places, such as
attaching Unix sockets, pipes, and anything else which uses file
descriptors, into the IOStream buffering classes. The three
arguments are as follows:<BR>
<TT>int __fd, </TT>// open file descriptor<BR>
<TT>const char* __name, </TT><BR>
<TT>ios_base::openmode __mode </TT>// same as the other openmode uses
arguments are as follows:
<UL>
<LI><TT>__c_file_type* F </TT>
// the __c_file_type typedef usually boils down to stdio's FILE
<LI><TT>ios_base::openmode M </TT>
// same as all the other uses of openmode
<LI><TT>int_type B </TT>
// buffer size, defaults to BUFSIZ
</UL>
For those wanting to use file descriptors instead of FILE*'s, I
invite you to contemplate the mysteries of C's <TT>fdopen()</TT>.
</UL>
</P>
<P>Return <A HREF="#top">to top of page</A> or
@ -159,7 +166,7 @@
<P CLASS="fineprint"><EM>
Comments and suggestions are welcome, and may be sent to
<A HREF="mailto:libstdc++@gcc.gnu.org">the mailing list</A>.
<BR> $Id: howto.html,v 1.3 2001/04/03 00:26:56 pme Exp $
<BR> $Id: howto.html,v 1.4 2001/05/02 01:39:03 pme Exp $
</EM></P>

View File

@ -9,7 +9,7 @@
** Locations of "the most recent snapshot is the Nth" text are
** answers 1_1, 1_4, 4_1, 5_6.
-->
<!-- $Id: index.html,v 1.7 2001/04/06 18:48:20 pme Exp $ -->
<!-- $Id: index.html,v 1.8 2001/05/10 18:42:11 pme Exp $ -->
</HEAD>
<BODY>
@ -41,8 +41,7 @@ http://gcc.gnu.org/onlinedocs/libstdc++/faq/</A>.</P>
<LI><A HREF="#2_0">Installation</A>
<OL>
<LI><A HREF="#2_1">How do I install libstdc++-v3?</A>
<LI><A HREF="#2_2">Is this a drop-in replacement for the
libstdc++ that's shipped with g++?</A>
<LI><A HREF="#2_2">[removed]</A>
<LI><A HREF="#2_3">What is this CVS thing that you keep
mentioning?</A>
<LI><A HREF="#2_4">How do I know if it works?</A>
@ -52,7 +51,7 @@ http://gcc.gnu.org/onlinedocs/libstdc++/faq/</A>.</P>
<OL>
<LI><A HREF="#3_1">Can libstdc++-v3 be used with &lt;my
favorite compiler&gt;?</A>
<LI><A HREF="#3_2">Building under Cygwin hangs/explodes!?</A>
<LI><A HREF="#3_2">[removed]</A>
<LI><A HREF="#3_3">Building under DEC OSF kills the assembler</A>
</OL>
@ -82,7 +81,7 @@ http://gcc.gnu.org/onlinedocs/libstdc++/faq/</A>.</P>
<LI><A HREF="#5_2">What's next after libstdc++-v3?</A>
<LI><A HREF="#5_3">What about the STL from SGI?</A>
<LI><A HREF="#5_4">Extensions and Backward Compatibility</A>
<LI><A HREF="#5_5">Compiling with &quot;-fnew-abi&quot;</A>
<LI><A HREF="#5_5">[removed]</A>
<LI><A HREF="#5_6">Is libstdc++-v3 thread-safe?</A>
<LI><A HREF="#5_7">How do I get a copy of the ISO C++ Standard?</A>
</OL>
@ -146,10 +145,10 @@ HREF="http://gcc.gnu.org/gcc-2.95/buildstat.html">portability</A>
Drepper are the lead maintainers of the CVS archive.
</P>
<P>Development and discussion is held on the libstdc++ mailing
list. Subscribing to the list, or searching the list
list. Subscribing to the list, or searching the list
archives, is open to everyone. You can read instructions for
doing so on the <A HREF="http://gcc.gnu.org/libstdc++/">homepage</A>. If you
have questions, ideas, code, or are just curious, sign up!
doing so on the <A HREF="http://gcc.gnu.org/libstdc++/">homepage</A>.
If you have questions, ideas, code, or are just curious, sign up!
</P>
<HR>
@ -174,8 +173,8 @@ HREF="ftp://gcc.gnu.org/pub/libstdc++/libstdc++-2.92.tar.gz">
HREF="http://www.deja.com/getdoc.xp?AN=469581698&fmt=text">a
Usenet article</A>.</P>
which is no longer available, thanks deja...-->
<P>Nathan Myers gave the best of all possible answers, responding
to a Usenet article asking this question: Sooner, if you help.
<P>Nathan Myers gave the best of all possible answers, responding to a
Usenet article asking this question: <EM>Sooner, if you help.</EM>
</P>
@ -254,20 +253,19 @@ which is no longer available, thanks deja...-->
an installation document), but the tools required are few:
</P>
<UL>
<LI> A release of libstdc++.
<LI> A recent release of GCC (version 2.95 works). Note
that building GCC is much easier and more automated
than building the GCC 2.[78] series was.
<LI> If you plan on hacking around with the makefiles, you
will need the tools <A
HREF="http://sources.redhat.com/autoconf/">autoconf</A>and <A
HREF="http://sources.redhat.com/automake/">automake</A>.
<LI> A 3.x release of GCC. Note that building GCC is much
easier and more automated than building the GCC 2.[78]
series was. If you are using GCC 2.95, you can still
build earlier snapshots of libstdc++.
<LI> GNU Make is the only make that supports these makefiles.
<LI> The GNU Autotools are needed if you are messing with
the configury or makefiles.
</UL>
<P>The file <A HREF="../documentation.html">documentation.html</A>
provides a good overview of the steps necessary to build, install,
and use the library. Instructions for configuring the library
with new flags such as --enable-threads are there also.
with new flags such as --enable-threads are there also, as well as
patches and instructions for working with GCC 2.95.
</P>
<P>The top-level install.html and
<A HREF="../17_intro/RELEASE-NOTES">RELEASE-NOTES</A> files contain
@ -278,11 +276,9 @@ HREF="http://sources.redhat.com/automake/">automake</A>.
</P>
<HR>
<H2><A NAME="2_2">2.2 Is this a drop-in replacement for the
libstdc++ that's shipped with g++?</A></H2>
<P>Yes, as of 2.90.8, it is intended as such. And as of 2.91,
libstdc++-v3 <EM>is</EM> the library that's shipped with
g++, so much of this answer has become moot.
<H2><A NAME="2_2">2.2 [removed]</A></H2>
<P>This question has become moot and has been removed. The stub
is here to preserve numbering (and hence links/bookmarks).
</P>
<HR>
@ -294,7 +290,7 @@ HREF="http://sources.redhat.com/automake/">automake</A>.
HREF="http://www.gnu.org/software/cvs/cvs.html">CVS entry in
the GNU software catalogue</A> has a better description as
well as a
<A HREF="http://www.cyclic.com/">link to the makers of CVS</A>.
<A HREF="http://www.cvshome.org/">link to the makers of CVS</A>.
</P>
<P>The &quot;anonymous client checkout&quot; feature of CVS is
similar to anonymous FTP in that it allows anyone to retrieve
@ -309,22 +305,13 @@ HREF="http://sources.redhat.com/automake/">automake</A>.
<H2><A NAME="2_4">2.4 How do I know if it works?</A></H2>
<P>libstdc++-v3 comes with its own testsuite. You do not need
to actually install the library (&quot;<TT>gmake
install</TT>&quot;) to run the testsuite. Note that 2.91 does
not use DejaGNU yet.
install</TT>&quot;) to run the testsuite.
</P>
<P>To run the testsuite on the library after building it, use
&quot;gmake check&quot; while in your build directory. To run
the testsuite on the library after building and installing it,
use &quot;gmake check-install&quot; instead.
</P>
<P>The testsuite subdirectory in your build directory will then
contain three files of the form YYYYMMDD-mkcheck*.txt. One of
them (-mkcheck.txt itself) contains the results of the tests;
this can be mailed to the list. The other files (-mkchecklog.txt
and -mkcheckfiles.txt) contain messages from the compiler while
building the test programs, and a list of the tests to be run,
respectively.
</P>
<P>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, <B>please</B> write up your idea and send it to the list!
@ -353,29 +340,9 @@ HREF="http://sources.redhat.com/automake/">automake</A>.
</P>
<HR>
<H2><A NAME="3_2">3.2 Building under Cygwin hangs/explodes!?</A></H2>
<P>Sometimes, yes. You're probably in the middle of generating
the <TT>numeric_limits</TT> specializations when it hangs,
right? Thought so...
</P>
<P>The <TT>&lt;limits&gt;</TT> header and its associated library
code are platform-specific. These files get generated from
scratch during installation, and it is this generator that is
hanging. More specifically, the only sure way to determine
what the <TT>numeric_limits&lt;T&gt;::traps</TT> boolean
should be is to actually divide by zero and see if it is
trapped or not.
</P>
<P>Under NT, this will occasionally just hang. On those
occasions when the test does not hang, the zero-division is
in fact trapped. That doesn't prevent hanging elsewhere.
</P>
<P>You have two options. You can get a newer cygwin1.dll (see the
Cygwin paragraph in the
<A HREF="../install.html">installation instructions</A>).
Or you can get a prebuilt set of bits/std_limits.h and
src/limitsMEMBERS.cc files from Mumit Khan's
<A HREF="http://www.xraylith.wisc.edu/~khan/software/gnu-win32/libstdc++-v3.html">Cygwin-related website</A>.
<H2><A NAME="3_2">3.2 [removed]</A></H2>
<P>This question has become moot and has been removed. The stub
is here to preserve numbering (and hence links/bookmarks).
</P>
<HR>
@ -403,7 +370,7 @@ HREF="http://sources.redhat.com/automake/">automake</A>.
<H2><A NAME="4_1">4.1 What works already?</A></H2>
<P>This is a verbatim clip from the &quot;Status&quot; section
of the RELEASE-NOTES for the latest snapshot.
of the RELEASE-NOTES for the latest snapshot.
</P>
<!-- Yeah, I meant that "verbatim clip" thing literally... :-) -->
@ -473,7 +440,8 @@ to the list</A>, Nathan Myers announced that he has started a list of
libstdc++, either. Really! Please do not report these as bugs.
</P>
<A NAME="4_4_Weff">
<P>The biggest of these is the quadzillions of warnings about the
<P><STRONG>-Weffc++</STRONG>
The biggest of these is the quadzillions of warnings about the
library headers emitted when <TT>-Weffc++</TT> is used. Making
libstdc++ &quot;-Weffc++-clean&quot; is not a goal of the project,
for a few reasons. Mainly, that option tries to enforce
@ -483,14 +451,15 @@ to the list</A>, Nathan Myers announced that he has started a list of
</P>
</A>
<A NAME="4_4_rel_ops">
<P>Another is the <TT>rel_ops</TT> namespace and the template
<P><STRONG>rel_ops</STRONG>
Another is the <TT>rel_ops</TT> namespace and the template
comparison operator functions contained therein. If they become
visible in the same namespace as other comparison functions
(e.g., '<TT>using</TT>' them and the &lt;iterator&gt; header),
then you will suddenly be faced with huge numbers of ambiguity
errors. This was discussed on the -v3 list; Nathan Myers
<A HREF="http://gcc.gnu.org/ml/libstdc++/2001-01/msg00247.html">sums
things up here</A>.
visible in the same namespace as other comparison functions
(e.g., '<TT>using</TT>' them and the &lt;iterator&gt; header),
then you will suddenly be faced with huge numbers of ambiguity
errors. This was discussed on the -v3 list; Nathan Myers
<A HREF="http://gcc.gnu.org/ml/libstdc++/2001-01/msg00247.html">sums
things up here</A>.
</P>
</A>
<A NAME="4_4_interface"><H3>The g++-3 headers are
@ -514,7 +483,8 @@ to the list</A>, Nathan Myers announced that he has started a list of
</P>
</A>
<A NAME="4_4_glibc">
<P>If you're on a GNU/Linux system and have just upgraded to
<P><STRONG>glibc</STRONG>
If you're on a GNU/Linux system and have just upgraded to
glibc 2.2, but are still using gcc 2.95.2, then you should have
read the glibc FAQ, specifically 2.34:
<PRE>
@ -527,22 +497,24 @@ http://clisp.cons.org/~haible/gccinclude-glibc-2.2-compat.diff
</PRE>
Note that 2.95.x shipped with the
<A HREF="#4_4_interface">old v2 library</A> which is no longer
maintained.
maintained. Also note that gcc 2.95.3 fixes this problem, but
requires a separate patch for libstdc++-v3.
</P>
</A>
<A NAME="4_4_checks">
<P>If you see compilation errors containing messages about
<P><STRONG>concept checks</STRONG>
If you see compilation errors containing messages about
<TT> <EM>foo</EM>Concept </TT>and a<TT> constraints </TT>
member function, then most
likely you have violated one of the requirements for types used
during instantiation of template containers. For example,
EqualityComparableConcept appears
if your types must be comparable with == and you have not
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).
</P>
<P>More information, including how to optionally disable the checks,
is available <A HREF="../19_diagnostics/howto.html#3">here</A>.
<P>More information, including how to optionally enable/disable the
checks, is available
<A HREF="../19_diagnostics/howto.html#3">here</A>.
</P>
</A>
@ -614,9 +586,8 @@ HREF="http://gcc.gnu.org/ml/libstdc++/1999/msg00084.html">speculation</A>.
<H2><A NAME="5_3">5.3 What about the STL from SGI?</A></H2>
<P>The <A HREF="http://www.sgi.com/Technology/STL/">STL from SGI</A>
is merged into libstdc++-v3 with changes as necessary.
Currently release 3.3 is being used. Changes in the STL
usually produce some weird bugs and lots of changes in the
rest of the libstdc++ source as we scramble to keep up. :-)
Currently release 3.3 is being used as an initial codebase, plus
changes, fixes, and extensions.
</P>
<P>In particular, <TT>string</TT> is not from SGI and makes no
use of their &quot;rope&quot; class (which is included as an
@ -642,14 +613,9 @@ HREF="http://gcc.gnu.org/ml/libstdc++/1999/msg00084.html">speculation</A>.
</P>
<HR>
<H2><A NAME="5_5">5.5 Compiling with &quot;-fnew-abi&quot;</A></H2>
<P>Towards the end of July 1999, this subject was brought up again
on the mailing list under a different name. The related
<A HREF="http://gcc.gnu.org/ml/libstdc++/1999-q3/msg00066.html">thread</A>
(by the name HOWTO-honor-std) is very instructive. More info
is at the end of RELEASE-NOTES.
</P>
<P>This functionality is now automated and turned on by default.
<H2><A NAME="5_5">5.5 [removed]</A></H2>
<P>This question has become moot and has been removed. The stub
is here to preserve numbering (and hence links/bookmarks).
</P>
<HR>
@ -672,16 +638,15 @@ HREF="http://gcc.gnu.org/ml/libstdc++/1999/msg00084.html">speculation</A>.
<HR>
<H2><A NAME="5_7">5.7 How do I get a copy of the ISO C++ Standard?</A></H2>
<P>Copies of the full ISO 14882 standard are available on line
via the ISO mirror site for committee members. Non-members,
or those who have not paid for the privilege of sitting on
the committee and sustained their two-meeting commitment for
voting rights, may get a copy of the standard from their
respective national standards organization. In the USA,
this national standards organization is ANSI and their
website is right <A HREF="http://www.ansi.org">here</A>.
(And if you've already registered with them, clicking this
link will take you to directly to the place where you can
<P>Copies of the full ISO 14882 standard are available on line via the
ISO mirror site for committee members. Non-members, or those who
have not paid for the privilege of sitting on the committee and
sustained their two-meeting commitment for voting rights, may get a
copy of the standard from their respective national standards
organization. In the USA, this national standards organization is
ANSI and their website is right <A HREF="http://www.ansi.org">here</A>.
(And if you've already registered with them, clicking this link will
take you to directly to the place where you can
<A HREF="http://webstore.ansi.org/ansidocstore/product.asp?sku=ISO%2FIEC+14882%2D1998">buy
the standard on-line</A>.
</P>
@ -695,9 +660,10 @@ HREF="http://gcc.gnu.org/ml/libstdc++/1999/msg00084.html">speculation</A>.
<P CLASS="fineprint"><EM>
Comments and suggestions are welcome, and may be sent to
<A HREF="mailto:libstdc++@gcc.gnu.org">the mailing list</A>.
<BR> $Id: index.html,v 1.7 2001/04/06 18:48:20 pme Exp $
<BR> $Id: index.html,v 1.8 2001/05/10 18:42:11 pme Exp $
</EM></P>
</BODY>
</HTML>

View File

@ -20,13 +20,12 @@
8. [11]What if I have more questions?
2. [12]Installation
1. [13]How do I install libstdc++-v3?
2. [14]Is this a drop-in replacement for the libstdc++ that's
shipped with g++?
2. [14][removed]
3. [15]What is this CVS thing that you keep mentioning?
4. [16]How do I know if it works?
3. [17]Platform-Specific Issues
1. [18]Can libstdc++-v3 be used with <my favorite compiler>?
2. [19]Building under Cygwin hangs/explodes!?
2. [19][removed]
3. [20]Building under DEC OSF kills the assembler
4. [21]Known Bugs and Non-Bugs
1. [22]What works already?
@ -46,7 +45,7 @@
2. [34]What's next after libstdc++-v3?
3. [35]What about the STL from SGI?
4. [36]Extensions and Backward Compatibility
5. [37]Compiling with "-fnew-abi"
5. [37][removed]
6. [38]Is libstdc++-v3 thread-safe?
7. [39]How do I get a copy of the ISO C++ Standard?
_________________________________________________________________
@ -184,39 +183,39 @@
Complete instructions are not given here (this is a FAQ, not an
installation document), but the tools required are few:
* A release of libstdc++.
* A recent release of GCC (version 2.95 works). Note that building
GCC is much easier and more automated than building the GCC 2.[78]
series was.
* If you plan on hacking around with the makefiles, you will need
the tools [53]autoconfand [54]automake.
* A 3.x release of GCC. Note that building GCC is much easier and
more automated than building the GCC 2.[78] series was. If you are
using GCC 2.95, you can still build earlier snapshots of
libstdc++.
* GNU Make is the only make that supports these makefiles.
* The GNU Autotools are needed if you are messing with the configury
or makefiles.
The file [55]documentation.html provides a good overview of the steps
The file [53]documentation.html provides a good overview of the steps
necessary to build, install, and use the library. Instructions for
configuring the library with new flags such as --enable-threads are
there also.
there also, as well as patches and instructions for working with GCC
2.95.
The top-level install.html and [56]RELEASE-NOTES files contain the
The top-level install.html and [54]RELEASE-NOTES files contain the
exact build and installation instructions. You may wish to browse
those files over CVSweb ahead of time to get a feel for what's
required. RELEASE-NOTES is located in the ".../docs/17_intro/"
directory of the distribution.
_________________________________________________________________
2.2 Is this a drop-in replacement for the libstdc++ that's shipped with g++?
2.2 [removed]
Yes, as of 2.90.8, it is intended as such. And as of 2.91,
libstdc++-v3 is the library that's shipped with g++, so much of this
answer has become moot.
This question has become moot and has been removed. The stub is here
to preserve numbering (and hence links/bookmarks).
_________________________________________________________________
2.3 What is this CVS thing that you keep mentioning?
The Concurrent Versions System is one of several revision control
packages. It was selected for GNU projects because it's free (speech),
free (beer), and very high quality. The [57]CVS entry in the GNU
software catalogue has a better description as well as a [58]link to
free (beer), and very high quality. The [55]CVS entry in the GNU
software catalogue has a better description as well as a [56]link to
the makers of CVS.
The "anonymous client checkout" feature of CVS is similar to anonymous
@ -229,21 +228,13 @@
2.4 How do I know if it works?
libstdc++-v3 comes with its own testsuite. You do not need to actually
install the library ("gmake install") to run the testsuite. Note that
2.91 does not use DejaGNU yet.
install the library ("gmake install") to run the testsuite.
To run the testsuite on the library after building it, use "gmake
check" while in your build directory. To run the testsuite on the
library after building and installing it, use "gmake check-install"
instead.
The testsuite subdirectory in your build directory will then contain
three files of the form YYYYMMDD-mkcheck*.txt. One of them
(-mkcheck.txt itself) contains the results of the tests; this can be
mailed to the list. The other files (-mkchecklog.txt and
-mkcheckfiles.txt) contain messages from the compiler while building
the test programs, and a list of the tests to be run, respectively.
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, please write
up your idea and send it to the list!
@ -269,26 +260,10 @@
and optimized for GCC/g++, however.
_________________________________________________________________
3.2 Building under Cygwin hangs/explodes!?
3.2 [removed]
Sometimes, yes. You're probably in the middle of generating the
numeric_limits specializations when it hangs, right? Thought so...
The <limits> header and its associated library code are
platform-specific. These files get generated from scratch during
installation, and it is this generator that is hanging. More
specifically, the only sure way to determine what the
numeric_limits<T>::traps boolean should be is to actually divide by
zero and see if it is trapped or not.
Under NT, this will occasionally just hang. On those occasions when
the test does not hang, the zero-division is in fact trapped. That
doesn't prevent hanging elsewhere.
You have two options. You can get a newer cygwin1.dll (see the Cygwin
paragraph in the [59]installation instructions). Or you can get a
prebuilt set of bits/std_limits.h and src/limitsMEMBERS.cc files from
Mumit Khan's [60]Cygwin-related website.
This question has become moot and has been removed. The stub is here
to preserve numbering (and hence links/bookmarks).
_________________________________________________________________
3.3 Building DEC OSF kills the assembler
@ -299,7 +274,7 @@
install GNU as and arrange for the GCC build to use it (or merge the
sources and build it during the bootstrap).
Anyone who [61]knows the DEC assembler well enough to provide the
Anyone who [57]knows the DEC assembler well enough to provide the
equivalent of these two pseudos would win praise and accolades from
many.
_________________________________________________________________
@ -352,16 +327,16 @@ New:
4.3 Bugs in the C++ language/lib specification
Yes, unfortunately, there are some. In a [62]message to the list,
Yes, unfortunately, there are some. In a [58]message to the list,
Nathan Myers announced that he has started a list of problems in the
ISO C++ Standard itself, especially with regard to the chapters that
concern the library. The list itself is [63]posted on his website.
concern the library. The list itself is [59]posted on his website.
Developers who are having problems interpreting the Standard may wish
to consult his notes.
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 [64]here.
public list of the library defects is occasionally published [60]here.
_________________________________________________________________
4.4 Things in libstdc++ that look like bugs
@ -370,26 +345,26 @@ New:
language specification (4.3), but aren't really bugs in libstdc++,
either. Really! Please do not report these as bugs.
The biggest of these is the quadzillions of warnings about the library
headers emitted when -Weffc++ is used. Making libstdc++
-Weffc++ The biggest of these is the quadzillions of warnings about
the library headers emitted when -Weffc++ is used. Making libstdc++
"-Weffc++-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. There
are multiple solutions under discussion.
Another is the rel_ops namespace and the template comparison operator
functions contained therein. If they become visible in the same
namespace as other comparison functions (e.g., 'using' them and the
<iterator> header), then you will suddenly be faced with huge numbers
of ambiguity errors. This was discussed on the -v3 list; Nathan Myers
[65]sums things up here.
rel_ops Another is the rel_ops namespace and the template comparison
operator functions contained therein. If they become visible in the
same namespace as other comparison functions (e.g., 'using' them and
the <iterator> header), then you will suddenly be faced with huge
numbers of ambiguity errors. This was discussed on the -v3 list;
Nathan Myers [61]sums things up here.
The g++-3 headers are not ours
If you have found an extremely broken header file which is causing
problems for you, look carefully before submitting a "high" priority
bug report (which you probably shouldn't do anyhow; see the last
paragraph of the page describing [66]the GCC bug database).
paragraph of the page describing [62]the GCC bug database).
If the headers are in ${prefix}/include/g++-3, then you are using the
old libstdc++-v2 library, which is nonstandard and unmaintained. Do
@ -397,11 +372,11 @@ New:
Currently our header files are installed in ${prefix}/include/g++-v3
(see the 'v'?). This may change with the next release of GCC, as it
may be too confusing, but [67]the question has not yet been decided.
may be too confusing, but [63]the question has not yet been decided.
If you're on a GNU/Linux system and have just upgraded to glibc 2.2,
but are still using gcc 2.95.2, then you should have read the glibc
FAQ, specifically 2.34:
glibc If you're on a GNU/Linux system and have just upgraded to glibc
2.2, but are still using gcc 2.95.2, then you should have read the
glibc FAQ, specifically 2.34:
2.34. When compiling C++ programs, I get a compilation error in streambuf.h.
{BH} You are using g++ 2.95.2? After upgrading to glibc 2.2, you need to
@ -410,35 +385,36 @@ type has changed in glibc 2.2. The patch is at
http://clisp.cons.org/~haible/gccinclude-glibc-2.2-compat.diff
Note that 2.95.x shipped with the [68]old v2 library which is no
longer maintained.
Note that 2.95.x shipped with the [64]old v2 library which is no
longer maintained. Also note that gcc 2.95.3 fixes this problem, but
requires a separate patch for libstdc++-v3.
If you see compilation errors containing messages about fooConcept and
a constraints member function, then most likely you have violated one
of the requirements for types used during instantiation of template
containers. 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).
concept checks If you see compilation errors containing messages about
fooConcept and a constraints 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).
More information, including how to optionally disable the checks, is
available [69]here.
More information, including how to optionally enable/disable the
checks, is available [65]here.
_________________________________________________________________
4.5 Aw, that's easy to fix!
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
[70]submitting patches that covers the procedure, but for libstdc++
[66]submitting patches 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++ [71]contributors' page also
GCC patches mailing list. The libstdc++ [67]contributors' page also
talks about how to submit patches.
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 [72]testsuite -- but only if such a test
caught immediately by the [68]testsuite -- but only if such a test
exists.
_________________________________________________________________
@ -476,16 +452,15 @@ http://clisp.cons.org/~haible/gccinclude-glibc-2.2-compat.diff
Bugfixes and rewrites (to improve or fix thread safety, for instance)
will of course be a continuing task.
[73]This question about the next libstdc++ prompted some brief but
interesting [74]speculation.
[69]This question about the next libstdc++ prompted some brief but
interesting [70]speculation.
_________________________________________________________________
5.3 What about the STL from SGI?
The [75]STL from SGI is merged into libstdc++-v3 with changes as
necessary. Currently release 3.3 is being used. Changes in the STL
usually produce some weird bugs and lots of changes in the rest of the
libstdc++ source as we scramble to keep up. :-)
The [71]STL from SGI is merged into libstdc++-v3 with changes as
necessary. Currently release 3.3 is being used as an initial codebase,
plus changes, fixes, and extensions.
In particular, string is not from SGI and makes no use of their "rope"
class (which is included as an optional extension), nor is valarray
@ -503,17 +478,13 @@ http://clisp.cons.org/~haible/gccinclude-glibc-2.2-compat.diff
#include <ext/hash_map>
Extensions to the library have [76]their own page.
Extensions to the library have [72]their own page.
_________________________________________________________________
5.5 Compiling with "-fnew-abi"
5.5 [removed]
Towards the end of July 1999, this subject was brought up again on the
mailing list under a different name. The related [77]thread (by the
name HOWTO-honor-std) is very instructive. More info is at the end of
RELEASE-NOTES.
This functionality is now automated and turned on by default.
This question has become moot and has been removed. The stub is here
to preserve numbering (and hence links/bookmarks).
_________________________________________________________________
5.6 Is libstdc++-v3 thread-safe?
@ -523,8 +494,8 @@ http://clisp.cons.org/~haible/gccinclude-glibc-2.2-compat.diff
This is assuming that your idea of "multithreaded" is the same as
ours... The general question of multithreading and libstdc++-v3 is
addressed in the chapter-specific advice for [78]Library Introduction.
Threadsafe containers are covered in more detail in [79]the Received
addressed in the chapter-specific advice for [73]Library Introduction.
Threadsafe containers are covered in more detail in [74]the Received
Wisdom section on containers.
_________________________________________________________________
@ -536,17 +507,17 @@ http://clisp.cons.org/~haible/gccinclude-glibc-2.2-compat.diff
their two-meeting commitment for voting rights, may get a copy of the
standard from their respective national standards organization. In the
USA, this national standards organization is ANSI and their website is
right [80]here. (And if you've already registered with them, clicking
this link will take you to directly to the place where you can [81]buy
right [75]here. (And if you've already registered with them, clicking
this link will take you to directly to the place where you can [76]buy
the standard on-line.
Who is your country's member body? Visit the [82]ISO homepage and find
Who is your country's member body? Visit the [77]ISO homepage and find
out!
_________________________________________________________________
Comments and suggestions are welcome, and may be sent to [83]the
Comments and suggestions are welcome, and may be sent to [78]the
mailing list.
$Id: index.html,v 1.7 2001/04/06 18:48:20 pme Exp $
$Id: index.html,v 1.8 2001/05/10 18:42:11 pme Exp $
References
@ -602,34 +573,29 @@ References
50. mailto:libstdc++@gcc.gnu.org
51. mailto:pme@sources.redhat.com
52. mailto:gdr@gcc.gnu.org
53. http://sources.redhat.com/autoconf/
54. http://sources.redhat.com/automake/
55. ../documentation.html
56. ../17_intro/RELEASE-NOTES
57. http://www.gnu.org/software/cvs/cvs.html
58. http://www.cyclic.com/
59. ../install.html
60. http://www.xraylith.wisc.edu/~khan/software/gnu-win32/libstdc++-v3.html
61. http://gcc.gnu.org/ml/libstdc++/2000-12/msg00279.html
62. http://gcc.gnu.org/ml/libstdc++/1998/msg00006.html
63. http://www.cantrip.org/draft-bugs.txt
64. http://anubis.dkuug.dk/jtc1/sc22/wg21/
65. http://gcc.gnu.org/ml/libstdc++/2001-01/msg00247.html
66. http://gcc.gnu.org/gnatswrite.html
67. http://gcc.gnu.org/ml/gcc/2000-10/msg00732.html
68. ../faq/index.html#4_4_interface
69. ../19_diagnostics/howto.html#3
70. http://gcc.gnu.org/contribute.html
71. ../17_intro/contribute.html
72. ../faq/index.html#2_4
73. http://gcc.gnu.org/ml/libstdc++/1999/msg00080.html
74. http://gcc.gnu.org/ml/libstdc++/1999/msg00084.html
75. http://www.sgi.com/Technology/STL/
76. ../ext/howto.html
77. http://gcc.gnu.org/ml/libstdc++/1999-q3/msg00066.html
78. http://gcc.gnu.org/onlinedocs/libstdc++/17_intro/howto.html#3
79. http://gcc.gnu.org/onlinedocs/libstdc++/23_containers/howto.html
80. http://www.ansi.org/
81. http://webstore.ansi.org/ansidocstore/product.asp?sku=ISO%2FIEC+14882%2D1998
82. http://www.iso.ch/
83. mailto:libstdc++@gcc.gnu.org
53. ../documentation.html
54. ../17_intro/RELEASE-NOTES
55. http://www.gnu.org/software/cvs/cvs.html
56. http://www.cvshome.org/
57. http://gcc.gnu.org/ml/libstdc++/2000-12/msg00279.html
58. http://gcc.gnu.org/ml/libstdc++/1998/msg00006.html
59. http://www.cantrip.org/draft-bugs.txt
60. http://anubis.dkuug.dk/jtc1/sc22/wg21/
61. http://gcc.gnu.org/ml/libstdc++/2001-01/msg00247.html
62. http://gcc.gnu.org/gnatswrite.html
63. http://gcc.gnu.org/ml/gcc/2000-10/msg00732.html
64. ../faq/index.html#4_4_interface
65. ../19_diagnostics/howto.html#3
66. http://gcc.gnu.org/contribute.html
67. ../17_intro/contribute.html
68. ../faq/index.html#2_4
69. http://gcc.gnu.org/ml/libstdc++/1999/msg00080.html
70. http://gcc.gnu.org/ml/libstdc++/1999/msg00084.html
71. http://www.sgi.com/Technology/STL/
72. ../ext/howto.html
73. http://gcc.gnu.org/onlinedocs/libstdc++/17_intro/howto.html#3
74. http://gcc.gnu.org/onlinedocs/libstdc++/23_containers/howto.html
75. http://www.ansi.org/
76. http://webstore.ansi.org/ansidocstore/product.asp?sku=ISO%2FIEC+14882%2D1998
77. http://www.iso.ch/
78. mailto:libstdc++@gcc.gnu.org

View File

@ -7,7 +7,7 @@
<META NAME="GENERATOR" CONTENT="vi and eight fingers">
<TITLE>libstdc++-v3 Installation Instructions</TITLE>
<LINK REL=StyleSheet HREF="lib3styles.css">
<!-- $Id: install.html,v 1.4 2001/02/07 00:03:20 pme Exp $ -->
<!-- $Id: install.html,v 1.5 2001/04/03 00:26:54 pme Exp $ -->
</HEAD>
<BODY>
@ -39,27 +39,32 @@
<H2><A NAME="prereqs">Tools you will need beforehand</A></H2>
<P>You will need a recent version of g++ to compile the snapshot of
libstdc++, one of the post-2.95.2 GCC
snapshots (insert standard caveat about using snapshots rather
than formal releases). You will need the full source
libstdc++, such as one of the GCC 3.x snapshots (insert standard
caveat about using snapshots rather than formal releases). You
will need the full source
distribution to whatever compiler release you are using. The
GCC snapshots can be had from one of the sites on their
<A HREF="http://gcc.gnu.org/mirrors.html">mirror list</A>.
</P>
<P>In addition, if you plan to modify the makefiles or regenerate
the configure scripts you'll need the nuevo automake, libtool
and autoconf to regenerate the Makefiles and configure
scripts. These tools are all required to be installed in the
same location (most linux distributions install these tools by
default, so no worries.)
<P>In addition, if you plan to modify the makefiles or regenerate the
configure scripts you'll need recent versions of the GNU Autotools:
autoconf (version 2.50 or later),
automake (version 1.4 or later), <!-- special version? -->
and libtool (multilanguage, version 1.4 or later), <!-- really? -->
in order to rebuild the files.
These tools are all required to be installed in the same location
(most linux distributions install these tools by default, so no
worries as long as the versions are correct).
</P>
<P>If you don't have bash, and want to run <TT>'make check'</TT> to
test your build, you'll need to get bash 2.x. Also recommended
is GNU Make, since it is the only 'make' that will parse these
makefiles correctly. We are moving to DejaGNU, so you'll
probably want to get that.
<P>GNU Make is the only 'make' that will parse the makefiles correctly.
</P>
<P>To test your build, you will need either DejaGNU 1.4 (to run
<TT>'make check'</TT> like
<A HREF="http://gcc.gnu.org/install/test.html">the rest of GCC</A>),
or Bash 2.x (to run <TT>'make check-script'</TT>).
</P>
<P>As of June 19, 2000, libstdc++ attempts to use tricky and
@ -73,44 +78,20 @@
<A HREF="ftp://sources.redhat.com/pub/binutils">here</A>.
</P>
<!-- Commented until some system-specific requirements appear.
<P>Finally, a few system-specific requirements:
<DL>
<DT>Cygwin
<DD>If you are using Cygwin to compile libstdc++-v3 on Win32, you'll
have to get a version of the cygwin1.dll that is dated on or
after February 1, 2000. This is necessary to successfully run
the script &quot;mknumeric_limits&quot; which probes the
floating-point
environment of the host in question -- before this date, Cygwin
would freeze when running this script. In addition, you may
want to get a current version of libtool (say libtool-1.3.4
and above) as earlier versions supposedly had problems creating
shared libraries.
[snip]
</DL>
</P>
-->
<HR>
<H2><A NAME="srcsetup">Setting up the source directories</A></H2>
<P><EM>As the libstdc++-v3 sources and the core GCC sources have
converged, more and more effort goes to building the
library as the default version to be shipped with g++. With the
2.90.8 snapshot, and especially for CVS versions after this
release, this is treated as the usual scenario. If you want to
build the library all by itself, you will need to explicitly
disable certain features (like namespaces) since the core GCC
library, libgcc.a, will not be rebuilt with those same features.
</EM>
</P>
<P>By default, all configurations of libstdc++-v3 now have namespaces
enabled. Being able to select/de-select this option was a complex task
that had hopelessly confused many otherwise intelligent people, and
provided an endless stream of silent cursing and cries for help.
Because of this, gcc sources are required, and are no longer optional.
</P>
<P>The following definitions will be used throughout the rest of this
document:
<UL>
@ -129,7 +110,7 @@
</UL>
Note:
<OL>
<LI>The .91 snapshot and following are intended to replace the
<LI>The 3.0 version and following are intended to replace the
library that comes with the compiler, so <EM>libsrcdir</EM>
and <EM>libbuilddir</EM> must be contained under
<EM>gccsrcdir</EM> and <EM>gccbuilddir</EM>, respectively.
@ -140,58 +121,24 @@
</OL>
</P>
<P>Since the release of libstdc++-2.90.8, configuration patches have gone
into CVS gcc that make the management of the various libstdc++ source
trees a bit easier. Because of this, both libstdc++-v2 and
libstdc++-v3 and live together in peace, without the need
for soft linking. The setup instructions are slightly different,
depending on whether you want to use CVS gcc or a snapshot. Please
choose the appropriate scenario:
</P>
<P><B>...with a gcc-2.9[67] snapshot</B>
<P>Unpack the <EM>gccsrcdir</EM> and go into that directory. For
instance, <TT>gcc-2.95.2</TT> is a valid <EM>gccsrcdir</EM>.
Once in <EM>gccsrcdir</EM>, you'll need to rename or delete
the libstdc++-v3 directory which comes with that snapshot:
<PRE>
<P>Check out or download the gcc sources: the resulting source directory
(<TT>gcc</TT> or <TT>gcc-3.0</TT>, for example) is <EM>gccsrcdir</EM>.
Once in <EM>gccsrcdir</EM>, you'll need to rename or delete the
libstdc++-v3 directory which comes with that snapshot:
<PRE>
mv libstdc++-v3 libstdc++-v3-previous <STRONG>[OR]</STRONG>
rm -r libstdc++-v3</PRE>
</P>
<P>Next, unpack the libstdc++-v3 library tarball into the
<EM>gccsrcdir</EM> directory; it will create a
<EM>libsrcdir</EM> called <TT>libstdc++-<EM>version</EM></TT>:
<PRE>
gzip -dc libstdc++-version.tar.gz | tar xf -</PRE>
</P>
<P>Finally, make a soft link between <EM>libsrcdir</EM> and
<TT>libstdc++-v3</TT> so that libstdc++-v3 will be the default C++
library used.
<PRE>
ln -s <EM>libsrcdir</EM> libstdc++-v3</PRE>
</P>
</P>
<P><B>...with CVS gcc</B>
<P>Check out or download the gcc sources: the resulting source
directory is <EM>gccsrcdir</EM>. Once in <EM>gccsrcdir</EM>,
you'll need to rename or delete the libstdc++-v3 directory
which comes with that snapshot:
<PRE>
mv libstdc++-v3 libstdc++-v3-previous <STRONG>[OR]</STRONG>
rm -r libstdc++-v3</PRE>
</P>
<P>Next, unpack the libstdc++-v3 library tarball into this
<EM>gccsrcdir</EM> directory; it will create a
<EM>libsrcdir</EM> called <TT>libstdc++-<EM>version</EM></TT>:
<PRE>
<P>Next, unpack the libstdc++-v3 library tarball into this
<EM>gccsrcdir</EM> directory; it will create a
<EM>libsrcdir</EM> called <TT>libstdc++-<EM>version</EM></TT>:
<PRE>
gzip -dc libstdc++-version.tar.gz | tar xf -</PRE>
</P>
<P>Finally, rename <EM>libsrcdir</EM> to <TT>libstdc++-v3</TT> so that
gcc's configure flags will be able to deal with the new library.
<PRE>
</P>
<P>Finally, rename <EM>libsrcdir</EM> to <TT>libstdc++-v3</TT> so that
gcc's configure flags will be able to deal with the new library.
<PRE>
mv <EM>libsrcdir</EM> libstdc++-v3</PRE>
</P>
</P>
@ -201,7 +148,7 @@
<A HREF="http://gcc.gnu.org/install/">GCC Installation
Instructions</A> first.
</P>
<P>Due to namespaces, when building libstdc++-v3 you'll have to configure
<P>When building libstdc++-v3 you'll have to configure
the entire <EM>gccsrcdir</EM> directory. The full list of libstdc++-v3
specific configuration options, not dependent on the specific compiler
release being used, can be found <A HREF="configopts.html">here</A>.
@ -235,13 +182,13 @@
<PRE>
make all-target-<EM>libstdc++-v3</EM></PRE>
This will configure and build the C++ library in the
<EM>gccbuilddir/cpu-vendor-OS/</EM>libstdc++ directory.
<EM>gccbuilddir/cpu-vendor-os/</EM>libstdc++ directory.
</P>
<P>If you are rebuilding from a previous build [attempt], some
information is kept in a cache file. This is stored in
<EM>gccbuilddir/cpu-vendor-OS/</EM> if you are building with
<EM>gccbuilddir/cpu-vendor-os/</EM> if you are building with
multilibs (the default), or in
<EM>gccbuilddir/cpu-vendor-OS/</EM>libstdc++-v3 if you have
<EM>gccbuilddir/cpu-vendor-os/</EM>libstdc++-v3 if you have
multilibs disabled. The filename is config.cache; if previous
information is causing problems, you can delete it entirely, or
simply edit it and remove lines.
@ -263,10 +210,9 @@
<PRE>
lib/
include/g++-v3/
backward/
bits/
ext/
CPU-vendor-OS/include/g++-v3/
bits/
<EM>cpu-vendor-os</EM>/bits/
ext/</PRE>
</P>
<P>You can check the status of the build without installing it using
@ -316,6 +262,10 @@
<P>Use the <TT>ldd(1)</TT> utility to show which library the system
thinks it will get at runtime.
</P>
<P>A libstdc++.la file is also installed, for use with Libtool. If
you use Libtool to create your executables, these details are
taken care of for you.
</P>
</OL>
</P>
@ -334,7 +284,7 @@
<P CLASS="fineprint"><EM>
Comments and suggestions are welcome, and may be sent to
<A HREF="mailto:libstdc++@gcc.gnu.org">the mailing list</A>.
<BR> $Id: install.html,v 1.4 2001/02/07 00:03:20 pme Exp $
<BR> $Id: install.html,v 1.5 2001/04/03 00:26:54 pme Exp $
</EM></P>