diff options
author | Phil Edwards <pme@gcc.gnu.org> | 2001-04-03 00:26:58 +0000 |
---|---|---|
committer | Phil Edwards <pme@gcc.gnu.org> | 2001-04-03 00:26:58 +0000 |
commit | 30a20a1ee0168656d375ea2333e14b46937bdc6a (patch) | |
tree | bafb595dea147deb7ac77eeb4fcdb31ddddbc477 /libstdc++-v3/docs/html | |
parent | 9f4a318c36db4565f126e4428ea856460437b27d (diff) | |
download | gcc-30a20a1ee0168656d375ea2333e14b46937bdc6a.zip gcc-30a20a1ee0168656d375ea2333e14b46937bdc6a.tar.gz gcc-30a20a1ee0168656d375ea2333e14b46937bdc6a.tar.bz2 |
New concept checking implementation.
2001-04-02 Phil Edwards <pme@sources.redhat.com>
New concept checking implementation.
* docs/html/19_diagnostics/howto.html: Document.
* docs/html/17_intro/concept_check.diff: New file, for reference.
* include/bits/boost_concept_check.h: New file from Boost.
* include/bits/c++config: Update comments.
* include/bits/concept_check.h: New file.
* include/bits/concept_checks.h: Removed.
* include/bits/container_concepts.h: Removed.
* include/bits/sequence_concepts.h: Removed.
* include/bits/stl_iterator_base.h: Removed; split into...
* include/bits/stl_iterator_base_funcs.h: ...this new file...
* include/bits/stl_iterator_base_types.h: ...and this new file.
* include/bits/sbuf_iter.h: Update to use new implementation.
* include/bits/std_iterator.h: Likewise.
* include/bits/std_memory.h: Likewise.
* include/bits/stl_algo.h: Likewise.
* include/bits/stl_algobase.h: Likewise.
* include/bits/stl_construct.h: Likewise.
* include/bits/stl_deque.h: Likewise.
* include/bits/stl_heap.h: Likewise.
* include/bits/stl_list.h: Likewise.
* include/bits/stl_map.h: Likewise.
* include/bits/stl_multimap.h: Likewise.
* include/bits/stl_multiset.h: Likewise.
* include/bits/stl_numeric.h: Likewise.
* include/bits/stl_queue.h: Likewise.
* include/bits/stl_set.h: Likewise.
* include/bits/stl_stack.h: Likewise.
* include/bits/stl_uninitialized.h: Likewise.
* include/bits/stl_vector.h: Likewise.
* include/ext/hash_map: Likewise.
* include/ext/hash_set: Likewise.
* include/ext/slist: Likewise.
* include/ext/stl_hashtable.h: Likewise.
* src/Makefile.am (base_headers): Update list of headers.
* Makefile.in: Regenerated.
* src/Makefile.in: Regenerated.
* libio/Makefile.in: Regenerated.
* libmath/Makefile.in: Regenerated.
* libsupc++/Makefile.in: Regenerated.
* testsuite/Makefile.in: Regenerated.
* docs/html/install.html: Update contact information.
* docs/html/17_intro/howto.html: Ditto.
* docs/html/18_support/howto.html: Ditto.
* docs/html/20_util/howto.html: Ditto.
* docs/html/21_strings/howto.html: Ditto.
* docs/html/22_locale/howto.html: Ditto.
* docs/html/23_containers/howto.html: Ditto.
* docs/html/24_iterators/howto.html: Ditto.
* docs/html/25_algorithms/howto.html: Ditto.
* docs/html/26_numerics/howto.html: Ditto.
* docs/html/27_io/howto.html: Ditto.
* docs/html/faq/index.html: Ditto, plus info on new checking code.
* docs/html/ext/howto.html: Ditto, plus info on new checking code.
* docs/html/faq/index.txt: Regenerated.
From-SVN: r41031
Diffstat (limited to 'libstdc++-v3/docs/html')
-rw-r--r-- | libstdc++-v3/docs/html/17_intro/concept_check.diff | 382 | ||||
-rw-r--r-- | libstdc++-v3/docs/html/17_intro/howto.html | 7 | ||||
-rw-r--r-- | libstdc++-v3/docs/html/18_support/howto.html | 7 | ||||
-rw-r--r-- | libstdc++-v3/docs/html/19_diagnostics/howto.html | 89 | ||||
-rw-r--r-- | libstdc++-v3/docs/html/20_util/howto.html | 7 | ||||
-rw-r--r-- | libstdc++-v3/docs/html/21_strings/howto.html | 7 | ||||
-rw-r--r-- | libstdc++-v3/docs/html/22_locale/howto.html | 7 | ||||
-rw-r--r-- | libstdc++-v3/docs/html/23_containers/howto.html | 7 | ||||
-rw-r--r-- | libstdc++-v3/docs/html/24_iterators/howto.html | 7 | ||||
-rw-r--r-- | libstdc++-v3/docs/html/25_algorithms/howto.html | 7 | ||||
-rw-r--r-- | libstdc++-v3/docs/html/26_numerics/howto.html | 7 | ||||
-rw-r--r-- | libstdc++-v3/docs/html/27_io/howto.html | 7 | ||||
-rw-r--r-- | libstdc++-v3/docs/html/ext/howto.html | 11 | ||||
-rw-r--r-- | libstdc++-v3/docs/html/faq/index.html | 78 | ||||
-rw-r--r-- | libstdc++-v3/docs/html/faq/index.txt | 25 | ||||
-rw-r--r-- | libstdc++-v3/docs/html/install.html | 7 |
16 files changed, 507 insertions, 155 deletions
diff --git a/libstdc++-v3/docs/html/17_intro/concept_check.diff b/libstdc++-v3/docs/html/17_intro/concept_check.diff new file mode 100644 index 0000000..afb17f5e --- /dev/null +++ b/libstdc++-v3/docs/html/17_intro/concept_check.diff @@ -0,0 +1,382 @@ + +Changes made while bringing boost/concept_check.hpp to v3's concept_check.h: + +1) File format changed from DOS to Unix. +2) Boost config.hpp and other workaround files dropped (unneeded in g++ v3). +3) Conditionally-compiled code depending on those "breakage" macros was + removed, or not, depending on the macro, so that the macros themselves + are gone. Since the same code would always be compiled, let's make it + easier on the reader and a few milliseconds faster for cpplib. +4) Tests for NDEBUG were removed; if NDEBUG is defined, none of the checking + code will even be included. +5) BOOST_CLASS_REQUIRES* changed to accept a namespace parameter. +6) SameTypeConcept added (simple wrapper around existing code). +7) An unused variable in OutputIteratorConcept was removed. + +At checkin, this was the exact diff, modulo the end-of-line character changes: + + +--- concept_check.hpp.orig Sun Apr 1 08:59:46 2001 ++++ boost_concept_check.h Mon Apr 2 18:56:41 2001 +@@ -5,20 +5,15 @@ + // "as is" without express or implied warranty, and with no claim as + // to its suitability for any purpose. + // ++ ++// GCC Note: based on version 1.12.0 of the Boost library. + #ifndef BOOST_CONCEPT_CHECKS_HPP + #define BOOST_CONCEPT_CHECKS_HPP + +-#include <boost/config.hpp> +-#include <boost/iterator.hpp> +-#include <boost/iterator.hpp> +-#include <utility> +-#include <boost/pending/limits.hpp> +- +-#if (__GNUC__) || defined(__KCC) || defined(__ghs) || defined(__MWERKS__) +-#define BOOST_FPTR & +-#else +-#define BOOST_FPTR +-#endif ++#pragma GCC system_header ++#include <bits/stl_iterator_base_types.h> // for traits and tags ++#include <utility> // for pair<> ++ + + namespace boost { + +@@ -27,80 +22,64 @@ + template <class Concept> + void function_requires() + { +-#if !defined(NDEBUG) +- void (Concept::*x)() = BOOST_FPTR Concept::constraints; ++ void (Concept::*x)() = &Concept::constraints; + ignore_unused_variable_warning(x); +-#endif + } + +-// The BOOST_CLASS_REQUIRES macros use function pointers as +-// template parameters, which VC++ does not support. +- +-#if defined(BOOST_NO_FUNCTION_PTR_TEMPLATE_PARAMETERS) +- +-#define BOOST_CLASS_REQUIRES(type_var, concept) +-#define BOOST_CLASS_REQUIRES2(type_var1, type_var2, concept) +-#define BOOST_CLASS_REQUIRES3(type_var1, type_var2, type_var3, concept) +-#define BOOST_CLASS_REQUIRES4(type_var1, type_var2, type_var3, type_var4, concept) + +-#else +- +-#define BOOST_CLASS_REQUIRES(type_var, concept) \ +- typedef void (concept <type_var>::* func##type_var##concept)(); \ ++#define BOOST_CLASS_REQUIRES(type_var, ns, concept) \ ++ typedef void (ns::concept <type_var>::* func##type_var##concept)(); \ + template <func##type_var##concept _Tp1> \ + struct concept_checking_##type_var##concept { }; \ + typedef concept_checking_##type_var##concept< \ +- BOOST_FPTR concept <type_var>::constraints> \ ++ &ns::concept <type_var>::constraints> \ + concept_checking_typedef_##type_var##concept + +-#define BOOST_CLASS_REQUIRES2(type_var1, type_var2, concept) \ +- typedef void (concept <type_var1,type_var2>::* func##type_var1##type_var2##concept)(); \ ++#define BOOST_CLASS_REQUIRES2(type_var1, type_var2, ns, concept) \ ++ typedef void (ns::concept <type_var1,type_var2>::* func##type_var1##type_var2##concept)(); \ + template <func##type_var1##type_var2##concept _Tp1> \ + struct concept_checking_##type_var1##type_var2##concept { }; \ + typedef concept_checking_##type_var1##type_var2##concept< \ +- BOOST_FPTR concept <type_var1,type_var2>::constraints> \ ++ &ns::concept <type_var1,type_var2>::constraints> \ + concept_checking_typedef_##type_var1##type_var2##concept + +-#define BOOST_CLASS_REQUIRES3(type_var1, type_var2, type_var3, concept) \ +- typedef void (concept <type_var1,type_var2,type_var3>::* func##type_var1##type_var2##type_var3##concept)(); \ ++#define BOOST_CLASS_REQUIRES3(type_var1, type_var2, type_var3, ns, concept) \ ++ typedef void (ns::concept <type_var1,type_var2,type_var3>::* func##type_var1##type_var2##type_var3##concept)(); \ + template <func##type_var1##type_var2##type_var3##concept _Tp1> \ + struct concept_checking_##type_var1##type_var2##type_var3##concept { }; \ + typedef concept_checking_##type_var1##type_var2##type_var3##concept< \ +- BOOST_FPTR concept <type_var1,type_var2,type_var3>::constraints> \ ++ &ns::concept <type_var1,type_var2,type_var3>::constraints> \ + concept_checking_typedef_##type_var1##type_var2##type_var3##concept + +-#define BOOST_CLASS_REQUIRES4(type_var1, type_var2, type_var3, type_var4, concept) \ +- typedef void (concept <type_var1,type_var2,type_var3,type_var4>::* func##type_var1##type_var2##type_var3##type_var4##concept)(); \ ++#define BOOST_CLASS_REQUIRES4(type_var1, type_var2, type_var3, type_var4, ns, concept) \ ++ typedef void (ns::concept <type_var1,type_var2,type_var3,type_var4>::* func##type_var1##type_var2##type_var3##type_var4##concept)(); \ + template <func##type_var1##type_var2##type_var3##type_var4##concept _Tp1> \ + struct concept_checking_##type_var1##type_var2##type_var3##type_var4##concept { }; \ + typedef concept_checking_##type_var1##type_var2##type_var3##type_var4##concept< \ +- BOOST_FPTR concept <type_var1,type_var2,type_var3,type_var4>::constraints> \ ++ &ns::concept <type_var1,type_var2,type_var3,type_var4>::constraints> \ + concept_checking_typedef_##type_var1##type_var2##type_var3##type_var4##concept + + +-#endif +- +-#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION + template <class T, class U> + struct require_same { }; + + template <class T> + struct require_same<T,T> { typedef T type; }; +-#else +-// This version does not perform checking, but will not do any harm. +-template <class T, class U> +-struct require_same { typedef T type; }; +-#endif ++ ++ template <class T, class U> ++ struct SameTypeConcept ++ { ++ void constraints() { ++ typedef typename require_same<T, U>::type req; ++ } ++ }; + + template <class T> + struct IntegerConcept { + void constraints() { +-#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION + errortype_must_be_an_integer_type(); +-#endif + } + }; +-#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION + template <> struct IntegerConcept<short> { void constraints() {} }; + template <> struct IntegerConcept<unsigned short> { void constraints() {} }; + template <> struct IntegerConcept<int> { void constraints() {} }; +@@ -108,32 +87,24 @@ + template <> struct IntegerConcept<long> { void constraints() {} }; + template <> struct IntegerConcept<unsigned long> { void constraints() {} }; + // etc. +-#endif + + template <class T> + struct SignedIntegerConcept { + void constraints() { +-#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION + errortype_must_be_a_signed_integer_type(); +-#endif + } + }; +-#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION + template <> struct SignedIntegerConcept<short> { void constraints() {} }; + template <> struct SignedIntegerConcept<int> { void constraints() {} }; + template <> struct SignedIntegerConcept<long> { void constraints() {} }; + // etc. +-#endif + + template <class T> + struct UnsignedIntegerConcept { + void constraints() { +-#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION + errortype_must_be_an_unsigned_integer_type(); +-#endif + } + }; +-#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION + template <> struct UnsignedIntegerConcept<unsigned short> + { void constraints() {} }; + template <> struct UnsignedIntegerConcept<unsigned int> +@@ -141,7 +112,6 @@ + template <> struct UnsignedIntegerConcept<unsigned long> + { void constraints() {} }; + // etc. +-#endif + + //=========================================================================== + // Basic Concepts +@@ -159,15 +129,11 @@ + struct AssignableConcept + { + void constraints() { +-#if !defined(_ITERATOR_) // back_insert_iterator broken for VC++ STL + a = a; // require assignment operator +-#endif + const_constraints(a); + } + void const_constraints(const TT& b) { +-#if !defined(_ITERATOR_) // back_insert_iterator broken for VC++ STL + a = b; // const required for argument to assignment +-#endif + } + TT a; + }; +@@ -196,17 +162,13 @@ + { + void constraints() { + TT b(a); +-#if !defined(_ITERATOR_) // back_insert_iterator broken for VC++ STL + a = a; // require assignment operator +-#endif + const_constraints(a); + ignore_unused_variable_warning(b); + } + void const_constraints(const TT& b) { + TT c(b); +-#if !defined(_ITERATOR_) // back_insert_iterator broken for VC++ STL + a = b; // const required for argument to assignment +-#endif + ignore_unused_variable_warning(c); + } + TT a; +@@ -304,6 +266,9 @@ + BOOST_DEFINE_BINARY_OPERATOR_CONSTRAINT(-, SubtractOpConcept); + BOOST_DEFINE_BINARY_OPERATOR_CONSTRAINT(%, ModOpConcept); + ++#undef BOOST_DEFINE_BINARY_PREDICATE_OP_CONSTRAINT ++#undef BOOST_DEFINE_BINARY_OPERATOR_CONSTRAINT ++ + //=========================================================================== + // Function Object Concepts + +@@ -318,7 +283,6 @@ + }; + + +-#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION + template <class Func> + struct GeneratorConcept<Func,void> + { +@@ -327,7 +291,6 @@ + } + Func f; + }; +-#endif + + template <class Func, class Return, class Arg> + struct UnaryFunctionConcept +@@ -340,7 +303,6 @@ + Return r; + }; + +-#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION + template <class Func, class Arg> + struct UnaryFunctionConcept<Func, void, Arg> { + void constraints() { +@@ -348,7 +310,6 @@ + } + Func f; + }; +-#endif + + template <class Func, class Return, class First, class Second> + struct BinaryFunctionConcept +@@ -362,7 +323,6 @@ + Return r; + }; + +-#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION + template <class Func, class First, class Second> + struct BinaryFunctionConcept<Func, void, First, Second> + { +@@ -373,7 +333,6 @@ + First first; + Second second; + }; +-#endif + + template <class Func, class Arg> + struct UnaryPredicateConcept +@@ -422,9 +381,7 @@ + function_requires< AssignableConcept<TT> >(); + function_requires< DefaultConstructibleConcept<TT> >(); + function_requires< EqualityComparableConcept<TT> >(); +-#ifndef BOOST_NO_STD_ITERATOR_TRAITS + typedef typename std::iterator_traits<TT>::value_type V; +-#endif + (void)*i; // require dereference operator + } + TT i; +@@ -446,7 +403,6 @@ + void constraints() { + function_requires< TrivialIteratorConcept<TT> >(); + // require iterator_traits typedef's +-#ifndef BOOST_NO_STD_ITERATOR_TRAITS + typedef typename std::iterator_traits<TT>::difference_type D; + function_requires< SignedIntegerConcept<D> >(); + typedef typename std::iterator_traits<TT>::reference R; +@@ -455,7 +411,6 @@ + function_requires< ConvertibleConcept< + typename std::iterator_traits<TT>::iterator_category, + std::input_iterator_tag> >(); +-#endif + ++i; // require preincrement operator + i++; // require postincrement operator + } +@@ -471,7 +426,7 @@ + i++; // require postincrement operator + *i++ = t; // require postincrement and assignment + } +- TT i, j; ++ TT i; + ValueT t; + }; + +@@ -480,14 +435,12 @@ + { + void constraints() { + function_requires< InputIteratorConcept<TT> >(); +-#ifndef BOOST_NO_STD_ITERATOR_TRAITS + function_requires< ConvertibleConcept< + typename std::iterator_traits<TT>::iterator_category, + std::forward_iterator_tag> >(); + typedef typename std::iterator_traits<TT>::reference reference; + reference r = *i; + ignore_unused_variable_warning(r); +-#endif + } + TT i; + }; +@@ -507,11 +460,9 @@ + { + void constraints() { + function_requires< ForwardIteratorConcept<TT> >(); +-#ifndef BOOST_NO_STD_ITERATOR_TRAITS + function_requires< ConvertibleConcept< + typename std::iterator_traits<TT>::iterator_category, + std::bidirectional_iterator_tag> >(); +-#endif + --i; // require predecrement operator + i--; // require postdecrement operator + } +@@ -536,12 +487,10 @@ + void constraints() { + function_requires< BidirectionalIteratorConcept<TT> >(); + function_requires< ComparableConcept<TT> >(); +-#ifndef BOOST_NO_STD_ITERATOR_TRAITS + function_requires< ConvertibleConcept< + typename std::iterator_traits<TT>::iterator_category, + std::random_access_iterator_tag> >(); + typedef typename std::iterator_traits<TT>::reference R; +-#endif + + i += n; // require assignment addition operator + i = i + n; i = n + i; // require addition with difference type +@@ -552,11 +501,7 @@ + } + TT a, b; + TT i, j; +-#ifndef BOOST_NO_STD_ITERATOR_TRAITS + typename std::iterator_traits<TT>::difference_type n; +-#else +- std::ptrdiff_t n; +-#endif + }; + + template <class TT> +@@ -568,11 +513,7 @@ + i[n] = *i; // require element access and assignment + } + TT i; +-#ifndef BOOST_NO_STD_ITERATOR_TRAITS + typename std::iterator_traits<TT>::difference_type n; +-#else +- std::ptrdiff_t n; +-#endif + }; + + //=========================================================================== + diff --git a/libstdc++-v3/docs/html/17_intro/howto.html b/libstdc++-v3/docs/html/17_intro/howto.html index 707d04d..ae568d4 100644 --- a/libstdc++-v3/docs/html/17_intro/howto.html +++ b/libstdc++-v3/docs/html/17_intro/howto.html @@ -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.6 2000/12/03 23:47:47 jsm28 Exp $ --> +<!-- $Id: howto.html,v 1.1 2000/12/10 04:03:09 pme Exp $ --> </HEAD> <BODY> @@ -144,9 +144,8 @@ <HR> <P CLASS="fineprint"><EM> Comments and suggestions are welcome, and may be sent to -<A HREF="mailto:pme@sources.redhat.com">Phil Edwards</A> or -<A HREF="mailto:gdr@gcc.gnu.org">Gabriel Dos Reis</A>. -<BR> $Id: howto.html,v 1.6 2000/12/03 23:47:47 jsm28 Exp $ +<A HREF="mailto:libstdc++@gcc.gnu.org">the mailing list</A>. +<BR> $Id: howto.html,v 1.1 2000/12/10 04:03:09 pme Exp $ </EM></P> diff --git a/libstdc++-v3/docs/html/18_support/howto.html b/libstdc++-v3/docs/html/18_support/howto.html index 8dbc96c..f2b5d88 100644 --- a/libstdc++-v3/docs/html/18_support/howto.html +++ b/libstdc++-v3/docs/html/18_support/howto.html @@ -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.7 2000/12/03 23:47:47 jsm28 Exp $ --> +<!-- $Id: howto.html,v 1.1 2000/12/10 04:04:54 pme Exp $ --> </HEAD> <BODY> @@ -259,9 +259,8 @@ <HR> <P CLASS="fineprint"><EM> Comments and suggestions are welcome, and may be sent to -<A HREF="mailto:pme@sources.redhat.com">Phil Edwards</A> or -<A HREF="mailto:gdr@gcc.gnu.org">Gabriel Dos Reis</A>. -<BR> $Id: howto.html,v 1.7 2000/12/03 23:47:47 jsm28 Exp $ +<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 $ </EM></P> diff --git a/libstdc++-v3/docs/html/19_diagnostics/howto.html b/libstdc++-v3/docs/html/19_diagnostics/howto.html index 7b072ea..26ba4cd 100644 --- a/libstdc++-v3/docs/html/19_diagnostics/howto.html +++ b/libstdc++-v3/docs/html/19_diagnostics/howto.html @@ -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.1 2000/12/10 04:04:54 pme Exp $ --> +<!-- $Id: howto.html,v 1.2 2001/03/25 00:01:56 pme Exp $ --> </HEAD> <BODY> @@ -26,7 +26,7 @@ <UL> <LI><A HREF="#1">Adding data to exceptions</A> <LI><A HREF="#2">Exception class hierarchy diagram</A> - <LI><A HREF="#3">Concept checkers</A> + <LI><A HREF="#3">Concept checkers -- <STRONG>new and improved!</STRONG></A> </UL> <HR> @@ -67,58 +67,44 @@ </P> <HR> -<H2><A NAME="3">Concept checkers</A></H2> - <P>First the good news, then the bad news.</P> - <P><STRONG>Good news:</STRONG> As part of their 3.3 release, SGI - added some nifty macros which - perform assertions on type properties. For example, the Standard - requires that types passed as template parameters to <TT>vector</TT> - be "Assignable" (which means what you think it means). +<H2><A NAME="3">Concept checkers -- <STRONG>new and improved!</STRONG></A></H2> + <P>Better taste! Less fat! Literally!</P> + <P>In 1999, SGI added <EM>concept checkers</EM> to their implementation + of the STL: code which checked the template parameters of + instantiated pieces of the STL, in order to insure that the parameters + being used met the requirements of the standard. For example, + the Standard requires that types passed as template parameters to + <TT>vector</TT> be "Assignable" (which means what you think + it means). The checking was done during compilation, and none of + the code was executed at runtime. </P> - <P>The concept checkers allow the source code for <TT>vector</TT> to - declare - <PRE> - __STL_CLASS_REQUIRES(_Tp, _Assignable); - </PRE>inside the template. <TT>_Tp</TT> is the element type of the - vector, and <TT>_Assignable</TT> is the concept to be checked (it is - defined in some back-end header files). When you instantiate - <TT>vector<MyType></TT>, compile-time checking can be done on - whether MyType meets the requirements for vectors. + <P>Unfortunately, the size of the compiler files grew significantly + as a result. The checking code itself was cumbersome. And bugs + were found in it on more than one occasion. </P> - <P>Most (all?) of the containers and sequences are capable of performing - concept checking during compilation, not just vector. + <P>The primary author of the checking code, Jeremy Siek, had already + started work on a replcement implementation. The new code has been + formally reviewed and accepted into + <A HREF="http://www.boost.org/libs/concept_check/concept_check.htm">the + Boost libraries</A>, and we are pleased to incorporate it into the + GNU C++ library. </P> - <P>If a concept is violated (thus causing a compilation failure), the - error messages printed by the compiler will be of the form - <PRE> - _STL_ERROR::__<EM>foo</EM>_violation - </PRE> where <EM>foo</EM> is a description of the precise violation. - For example, if a type is required to support the preincrement - operator but doesn't, then you will see - _STL_ERROR::__postincrement_operator_requirement_violation, which - should give you a hint as to the nature of the problem. + <P>The new version imposes a much smaller space overhead on the generated + object file. The checks are also cleaner and easier to read and + understand. </P> - <P>Other names might be seen for more specific errors, for example, - _ERROR_IN_STL_CONTAINER::__begin_iterator_accessor_requirement_violation. + <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> - <P>You will probably also see other errors as the malformed code is - actually used. The concept checking error messages should be printed - before the others, so start at the top and work your way down. - </P> - <P><STRONG>Bad news:</STRONG> The current checking code is somewhat - messy. It results in no runtime overhead, but there is a space - penalty (sometimes a very large one) in the generated code. And the - code itself has bugs. - </P> - <P>Concept checking can be disabled when you build your code. Just - define (via -D or #define) the macro - <TT>_STL_NO_CONCEPT_CHECKS</TT> (yes, with the leading underscore). - In fact, this may already be defined in the library by default, - depending on what decision we come to. - </P> - <P><STRONG>More good news:</STRONG> Replacement code has already been - written by the same author of the original code. It's available at - Boost and we hope to integrate it into the library. + <P>Return <A HREF="#top">to top of page</A> or <A HREF="../faq/index.html">to the FAQ</A>. </P> @@ -129,9 +115,8 @@ <HR> <P CLASS="fineprint"><EM> Comments and suggestions are welcome, and may be sent to -<A HREF="mailto:pme@sources.redhat.com">Phil Edwards</A> or -<A HREF="mailto:gdr@gcc.gnu.org">Gabriel Dos Reis</A>. -<BR> $Id: howto.html,v 1.1 2000/12/10 04:04:54 pme Exp $ +<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 $ </EM></P> diff --git a/libstdc++-v3/docs/html/20_util/howto.html b/libstdc++-v3/docs/html/20_util/howto.html index e642ea7..f959468 100644 --- a/libstdc++-v3/docs/html/20_util/howto.html +++ b/libstdc++-v3/docs/html/20_util/howto.html @@ -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.1 2000/12/10 04:04:54 pme Exp $ --> +<!-- $Id: howto.html,v 1.2 2001/01/23 17:02:27 pme Exp $ --> </HEAD> <BODY> @@ -212,9 +212,8 @@ <HR> <P CLASS="fineprint"><EM> Comments and suggestions are welcome, and may be sent to -<A HREF="mailto:pme@sources.redhat.com">Phil Edwards</A> or -<A HREF="mailto:gdr@gcc.gnu.org">Gabriel Dos Reis</A>. -<BR> $Id: howto.html,v 1.1 2000/12/10 04:04:54 pme Exp $ +<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 $ </EM></P> diff --git a/libstdc++-v3/docs/html/21_strings/howto.html b/libstdc++-v3/docs/html/21_strings/howto.html index cdc8368..8025426 100644 --- a/libstdc++-v3/docs/html/21_strings/howto.html +++ b/libstdc++-v3/docs/html/21_strings/howto.html @@ -8,7 +8,7 @@ <META NAME="GENERATOR" CONTENT="vi and eight fingers"> <TITLE>libstdc++-v3 HOWTO: Chapter 21</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/02/07 00:03:20 pme Exp $ --> </HEAD> <BODY> @@ -329,9 +329,8 @@ <HR> <P CLASS="fineprint"><EM> Comments and suggestions are welcome, and may be sent to -<A HREF="mailto:pme@sources.redhat.com">Phil Edwards</A> or -<A HREF="mailto:gdr@gcc.gnu.org">Gabriel Dos Reis</A>. -<BR> $Id: howto.html,v 1.1 2000/12/10 04:04:55 pme Exp $ +<A HREF="mailto:libstdc++@gcc.gnu.org">the mailing list</A>. +<BR> $Id: howto.html,v 1.2 2001/02/07 00:03:20 pme Exp $ </EM></P> diff --git a/libstdc++-v3/docs/html/22_locale/howto.html b/libstdc++-v3/docs/html/22_locale/howto.html index cbf1daf..868b3d9 100644 --- a/libstdc++-v3/docs/html/22_locale/howto.html +++ b/libstdc++-v3/docs/html/22_locale/howto.html @@ -8,7 +8,7 @@ <META NAME="GENERATOR" CONTENT="vi and eight fingers"> <TITLE>libstdc++-v3 HOWTO: Chapter 22</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/02/07 00:03:20 pme Exp $ --> </HEAD> <BODY> @@ -225,9 +225,8 @@ functionality are given. <HR> <P CLASS="fineprint"><EM> Comments and suggestions are welcome, and may be sent to -<A HREF="mailto:pme@sources.redhat.com">Phil Edwards</A> or -<A HREF="mailto:gdr@gcc.gnu.org">Gabriel Dos Reis</A>. -<BR> $Id: howto.html,v 1.1 2000/12/10 04:04:55 pme Exp $ +<A HREF="mailto:libstdc++@gcc.gnu.org">the mailing list</A>. +<BR> $Id: howto.html,v 1.2 2001/02/07 00:03:20 pme Exp $ </EM></P> diff --git a/libstdc++-v3/docs/html/23_containers/howto.html b/libstdc++-v3/docs/html/23_containers/howto.html index a6c0afc..c8350a7 100644 --- a/libstdc++-v3/docs/html/23_containers/howto.html +++ b/libstdc++-v3/docs/html/23_containers/howto.html @@ -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.4 2000/12/03 23:47:48 jsm28 Exp $ --> +<!-- $Id: howto.html,v 1.1 2000/12/10 04:04:55 pme Exp $ --> </HEAD> <BODY> @@ -235,9 +235,8 @@ <HR> <P CLASS="fineprint"><EM> Comments and suggestions are welcome, and may be sent to -<A HREF="mailto:pme@sources.redhat.com">Phil Edwards</A> or -<A HREF="mailto:gdr@gcc.gnu.org">Gabriel Dos Reis</A>. -<BR> $Id: howto.html,v 1.4 2000/12/03 23:47:48 jsm28 Exp $ +<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 $ </EM></P> diff --git a/libstdc++-v3/docs/html/24_iterators/howto.html b/libstdc++-v3/docs/html/24_iterators/howto.html index a807cf3..5210632 100644 --- a/libstdc++-v3/docs/html/24_iterators/howto.html +++ b/libstdc++-v3/docs/html/24_iterators/howto.html @@ -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.5 2000/12/03 23:47:48 jsm28 Exp $ --> +<!-- $Id: howto.html,v 1.1 2000/12/10 04:04:55 pme Exp $ --> </HEAD> <BODY> @@ -84,9 +84,8 @@ <HR> <P CLASS="fineprint"><EM> Comments and suggestions are welcome, and may be sent to -<A HREF="mailto:pme@sources.redhat.com">Phil Edwards</A> or -<A HREF="mailto:gdr@gcc.gnu.org">Gabriel Dos Reis</A>. -<BR> $Id: howto.html,v 1.5 2000/12/03 23:47:48 jsm28 Exp $ +<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 $ </EM></P> diff --git a/libstdc++-v3/docs/html/25_algorithms/howto.html b/libstdc++-v3/docs/html/25_algorithms/howto.html index c161b18..f0481cd 100644 --- a/libstdc++-v3/docs/html/25_algorithms/howto.html +++ b/libstdc++-v3/docs/html/25_algorithms/howto.html @@ -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.5 2000/12/03 23:47:48 jsm28 Exp $ --> +<!-- $Id: howto.html,v 1.1 2000/12/10 04:04:55 pme Exp $ --> </HEAD> <BODY> @@ -86,9 +86,8 @@ <HR> <P CLASS="fineprint"><EM> Comments and suggestions are welcome, and may be sent to -<A HREF="mailto:pme@sources.redhat.com">Phil Edwards</A> or -<A HREF="mailto:gdr@gcc.gnu.org">Gabriel Dos Reis</A>. -<BR> $Id: howto.html,v 1.5 2000/12/03 23:47:48 jsm28 Exp $ +<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 $ </EM></P> diff --git a/libstdc++-v3/docs/html/26_numerics/howto.html b/libstdc++-v3/docs/html/26_numerics/howto.html index c69532d..4f33841 100644 --- a/libstdc++-v3/docs/html/26_numerics/howto.html +++ b/libstdc++-v3/docs/html/26_numerics/howto.html @@ -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.7 2000/12/03 23:47:48 jsm28 Exp $ --> +<!-- $Id: howto.html,v 1.1 2000/12/10 04:04:56 pme Exp $ --> </HEAD> <BODY> @@ -132,9 +132,8 @@ <HR> <P CLASS="fineprint"><EM> Comments and suggestions are welcome, and may be sent to -<A HREF="mailto:pme@sources.redhat.com">Phil Edwards</A> or -<A HREF="mailto:gdr@gcc.gnu.org">Gabriel Dos Reis</A>. -<BR> $Id: howto.html,v 1.7 2000/12/03 23:47:48 jsm28 Exp $ +<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 $ </EM></P> diff --git a/libstdc++-v3/docs/html/27_io/howto.html b/libstdc++-v3/docs/html/27_io/howto.html index a6aa045..0da4417 100644 --- a/libstdc++-v3/docs/html/27_io/howto.html +++ b/libstdc++-v3/docs/html/27_io/howto.html @@ -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.2 2001/01/23 17:02:27 pme Exp $ --> +<!-- $Id: howto.html,v 1.3 2001/02/07 00:03:21 pme Exp $ --> </HEAD> <BODY> @@ -415,9 +415,8 @@ <HR> <P CLASS="fineprint"><EM> Comments and suggestions are welcome, and may be sent to -<A HREF="mailto:pme@sources.redhat.com">Phil Edwards</A> or -<A HREF="mailto:gdr@gcc.gnu.org">Gabriel Dos Reis</A>. -<BR> $Id: howto.html,v 1.2 2001/01/23 17:02:27 pme Exp $ +<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 $ </EM></P> diff --git a/libstdc++-v3/docs/html/ext/howto.html b/libstdc++-v3/docs/html/ext/howto.html index 78755c6..84b8b8d 100644 --- a/libstdc++-v3/docs/html/ext/howto.html +++ b/libstdc++-v3/docs/html/ext/howto.html @@ -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.1 2000/12/10 04:04:56 pme Exp $ --> +<!-- $Id: howto.html,v 1.2 2001/03/25 00:01:56 pme Exp $ --> </HEAD> <BODY> @@ -141,8 +141,8 @@ <HR> <H2><A NAME="4">Compile-time checks</A></H2> - <P>Currently libstdc++-v3 uses the concept checkers from SGI's STL - 3.3 to perform <A HREF="../19_diagnostics/howto.html#3">optional + <P>Currently libstdc++-v3 uses the concept checkers from the Boost + library to perform <A HREF="../19_diagnostics/howto.html#3">optional compile-time checking</A> of template instantiations of the standard containers. They are described in the linked-to page. </P> @@ -158,9 +158,8 @@ <HR> <P CLASS="fineprint"><EM> Comments and suggestions are welcome, and may be sent to -<A HREF="mailto:pme@sources.redhat.com">Phil Edwards</A> or -<A HREF="mailto:gdr@gcc.gnu.org">Gabriel Dos Reis</A>. -<BR> $Id: howto.html,v 1.1 2000/12/10 04:04:56 pme Exp $ +<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 $ </EM></P> diff --git a/libstdc++-v3/docs/html/faq/index.html b/libstdc++-v3/docs/html/faq/index.html index 95ab8fb..80bb256 100644 --- a/libstdc++-v3/docs/html/faq/index.html +++ b/libstdc++-v3/docs/html/faq/index.html @@ -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.4 2001/03/01 22:32:23 pme Exp $ --> +<!-- $Id: index.html,v 1.5 2001/03/25 00:01:57 pme Exp $ --> </HEAD> <BODY> @@ -62,15 +62,16 @@ http://gcc.gnu.org/onlinedocs/libstdc++/faq/</A>.</P> <LI><A HREF="#4_2">Bugs in gcc/g++ (not libstdc++-v3)</A> <LI><A HREF="#4_3">Bugs in the C++ language/lib specification</A> <LI><A HREF="#4_4">Things in libstdc++ that look like bugs</A> - <UL> + <UL> <LI><A HREF="#4_4_Weff">-Weffc++ complains too much</A> <LI><A HREF="#4_4_rel_ops">"ambiguous overloads" - after including an old-style header</A> + after including an old-style header</A> <LI><A HREF="#4_4_interface">The g++-3 headers are <STRONG>not ours</STRONG></A> <LI><A HREF="#4_4_glibc">compilation errors from streambuf.h</A> - <LI><A HREF="#4_4_checks">_STL_ERROR::__something_huge_...</A> - </UL> + <LI><A HREF="#4_4_checks">errors about <EM>*Cconcept</EM> and + <EM>constraints</EM> in the STL...</A> + </UL> <LI><A HREF="#4_5">Aw, that's easy to fix!</A> </OL> @@ -258,7 +259,7 @@ which is no longer available, thanks deja...--> 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 + will need the tools <A HREF="http://sources.redhat.com/autoconf/">autoconf</A>and <A HREF="http://sources.redhat.com/automake/">automake</A>. <LI> GNU Make is the only make that supports these makefiles. @@ -289,11 +290,11 @@ HREF="http://sources.redhat.com/automake/">automake</A>. keep mentioning?</A></H2> <P>The <EM>Concurrent Versions System</EM> 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 <A + free (speech), free (beer), and very high quality. The <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.cyclic.com/">link to the makers of CVS</A>. </P> <P>The "anonymous client checkout" feature of CVS is similar to anonymous FTP in that it allows anyone to retrieve @@ -371,7 +372,7 @@ HREF="http://sources.redhat.com/automake/">automake</A>. </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>). + <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>. @@ -381,15 +382,15 @@ HREF="http://sources.redhat.com/automake/">automake</A>. <H2><A NAME="3_3">3.3 Building DEC OSF kills the assembler</A></H2> <P>The <TT>atomicity.h</TT> header for the Alpha processor currently uses pseudo-operators which the DEC assembler - doesn't understand (in particular, .subsection and .previous). - The simple solution is to install GNU <TT>as</TT> and arrange - for the GCC build to use it (or merge the sources and build - it during the bootstrap). + doesn't understand (in particular, .subsection and .previous). + The simple solution is to install GNU <TT>as</TT> and arrange + for the GCC build to use it (or merge the sources and build + it during the bootstrap). </P> <P>Anyone who <A HREF="http://gcc.gnu.org/ml/libstdc++/2000-12/msg00279.html">knows - the DEC assembler well enough</A> to provide the equivalent of - these two pseudos would win praise and accolades from many. + the DEC assembler well enough</A> to provide the equivalent of + these two pseudos would win praise and accolades from many. </P> @@ -511,12 +512,12 @@ to the list</A>, Nathan Myers announced that he has started a list of <A NAME="4_4_rel_ops"> <P>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 <iterator> 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 <iterator> 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 @@ -541,8 +542,8 @@ to the list</A>, Nathan Myers announced that he has started a list of </A> <A NAME="4_4_glibc"> <P>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 2.2, but are still using gcc 2.95.2, then you should have + read the glibc FAQ, specifically 2.34: <PRE> 2.34. When compiling C++ programs, I get a compilation error in streambuf.h. @@ -551,24 +552,24 @@ apply a patch to the include files in /usr/include/g++, because the fpos_t type has changed in glibc 2.2. The patch is at 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. + Note that 2.95.x shipped with the + <A HREF="#4_4_interface">old v2 library</A> which is no longer + maintained. </P> </A> <A NAME="4_4_checks"> - <P>If you see compilation errors containing messages which begin - with _STL_ERROR:: followed by a very verbose name, then most - likely you have violated one of the requirements for types used - during instantiation of template containers. For example, - _STL_ERROR::__equality_comparable_requirement_violation appears + <P>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 provided this capability (a typo, or wrong visibility, or you - just plain forgot, etc). + 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>. - The code itself might be disabled or replaced already. + <P>More information, including how to optionally disable the checks, + is available <A HREF="../19_diagnostics/howto.html#3">here</A>. </P> </A> @@ -579,7 +580,7 @@ http://clisp.cons.org/~haible/gccinclude-glibc-2.2-compat.diff on <A HREF="http://gcc.gnu.org/contribute.html">submitting patches</A> 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++ + the GCC patches mailing list. The libstdc++ <A HREF="../17_intro/contribute.html">contributors' page</A> also talks about how to submit patches. </P> @@ -720,9 +721,8 @@ HREF="http://gcc.gnu.org/ml/libstdc++/1999/msg00084.html">speculation</A>. <HR> <P CLASS="fineprint"><EM> Comments and suggestions are welcome, and may be sent to -<A HREF="mailto:pme@sources.redhat.com">Phil Edwards</A> or -<A HREF="mailto:gdr@gcc.gnu.org">Gabriel Dos Reis</A>. -<BR> $Id: index.html,v 1.4 2001/03/01 22:32:23 pme Exp $ +<A HREF="mailto:libstdc++@gcc.gnu.org">the mailing list</A>. +<BR> $Id: index.html,v 1.5 2001/03/25 00:01:57 pme Exp $ </EM></P> diff --git a/libstdc++-v3/docs/html/faq/index.txt b/libstdc++-v3/docs/html/faq/index.txt index 8af6565..9ad8712 100644 --- a/libstdc++-v3/docs/html/faq/index.txt +++ b/libstdc++-v3/docs/html/faq/index.txt @@ -38,7 +38,7 @@ header o [28]The g++-3 headers are not ours o [29]compilation errors from streambuf.h - o [30]_STL_ERROR::__something_huge_... + o [30]errors about *Cconcept and constraints in the STL... 5. [31]Aw, that's easy to fix! 5. [32]Miscellaneous 1. [33]string::iterator is not char*; vector<T>::iterator is not @@ -440,18 +440,16 @@ 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. - If you see compilation errors containing messages which begin with - _STL_ERROR:: followed by a very verbose name, then most likely you - have violated one of the requirements for types used during - instantiation of template containers. For example, - _STL_ERROR::__equality_comparable_requirement_violation appears if - your types must be comparable with == and you have not provided this + 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). More information, including how to optionally disable the checks, is - available [69]here. The code itself might be disabled or replaced - already. + available [69]here. _________________________________________________________________ 4.5 Aw, that's easy to fix! @@ -573,9 +571,9 @@ http://clisp.cons.org/~haible/gccinclude-glibc-2.2-compat.diff out! _________________________________________________________________ - Comments and suggestions are welcome, and may be sent to [83]Phil - Edwards or [84]Gabriel Dos Reis. - $Id: index.html,v 1.4 2001/03/01 22:32:23 pme Exp $ + Comments and suggestions are welcome, and may be sent to [83]the + mailing list. + $Id: index.html,v 1.5 2001/03/25 00:01:57 pme Exp $ References @@ -661,5 +659,4 @@ References 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:pme@sources.redhat.com - 84. mailto:gdr@gcc.gnu.org + 83. mailto:libstdc++@gcc.gnu.org diff --git a/libstdc++-v3/docs/html/install.html b/libstdc++-v3/docs/html/install.html index fcc0c0d..24df89b 100644 --- a/libstdc++-v3/docs/html/install.html +++ b/libstdc++-v3/docs/html/install.html @@ -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.3 2001/01/23 17:02:26 pme Exp $ --> +<!-- $Id: install.html,v 1.4 2001/02/07 00:03:20 pme Exp $ --> </HEAD> <BODY> @@ -333,9 +333,8 @@ <HR> <P CLASS="fineprint"><EM> Comments and suggestions are welcome, and may be sent to -<A HREF="mailto:pme@sources.redhat.com">Phil Edwards</A> or -<A HREF="mailto:gdr@gcc.gnu.org">Gabriel Dos Reis</A>. -<BR> $Id: install.html,v 1.3 2001/01/23 17:02:26 pme Exp $ +<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 $ </EM></P> |