From 30a20a1ee0168656d375ea2333e14b46937bdc6a Mon Sep 17 00:00:00 2001 From: Phil Edwards Date: Tue, 3 Apr 2001 00:26:58 +0000 Subject: New concept checking implementation. 2001-04-02 Phil Edwards 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 --- libstdc++-v3/docs/html/17_intro/concept_check.diff | 382 +++++++++++++++++++++ libstdc++-v3/docs/html/17_intro/howto.html | 7 +- libstdc++-v3/docs/html/18_support/howto.html | 7 +- libstdc++-v3/docs/html/19_diagnostics/howto.html | 89 ++--- libstdc++-v3/docs/html/20_util/howto.html | 7 +- libstdc++-v3/docs/html/21_strings/howto.html | 7 +- libstdc++-v3/docs/html/22_locale/howto.html | 7 +- libstdc++-v3/docs/html/23_containers/howto.html | 7 +- libstdc++-v3/docs/html/24_iterators/howto.html | 7 +- libstdc++-v3/docs/html/25_algorithms/howto.html | 7 +- libstdc++-v3/docs/html/26_numerics/howto.html | 7 +- libstdc++-v3/docs/html/27_io/howto.html | 7 +- libstdc++-v3/docs/html/ext/howto.html | 11 +- libstdc++-v3/docs/html/faq/index.html | 78 ++--- libstdc++-v3/docs/html/faq/index.txt | 25 +- libstdc++-v3/docs/html/install.html | 7 +- 16 files changed, 507 insertions(+), 155 deletions(-) create mode 100644 libstdc++-v3/docs/html/17_intro/concept_check.diff (limited to 'libstdc++-v3/docs/html') 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 +-#include +-#include +-#include +-#include +- +-#if (__GNUC__) || defined(__KCC) || defined(__ghs) || defined(__MWERKS__) +-#define BOOST_FPTR & +-#else +-#define BOOST_FPTR +-#endif ++#pragma GCC system_header ++#include // for traits and tags ++#include // for pair<> ++ + + namespace boost { + +@@ -27,80 +22,64 @@ + template + 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 ::* func##type_var##concept)(); \ ++#define BOOST_CLASS_REQUIRES(type_var, ns, concept) \ ++ typedef void (ns::concept ::* func##type_var##concept)(); \ + template \ + struct concept_checking_##type_var##concept { }; \ + typedef concept_checking_##type_var##concept< \ +- BOOST_FPTR concept ::constraints> \ ++ &ns::concept ::constraints> \ + concept_checking_typedef_##type_var##concept + +-#define BOOST_CLASS_REQUIRES2(type_var1, type_var2, concept) \ +- typedef void (concept ::* func##type_var1##type_var2##concept)(); \ ++#define BOOST_CLASS_REQUIRES2(type_var1, type_var2, ns, concept) \ ++ typedef void (ns::concept ::* func##type_var1##type_var2##concept)(); \ + template \ + struct concept_checking_##type_var1##type_var2##concept { }; \ + typedef concept_checking_##type_var1##type_var2##concept< \ +- BOOST_FPTR concept ::constraints> \ ++ &ns::concept ::constraints> \ + concept_checking_typedef_##type_var1##type_var2##concept + +-#define BOOST_CLASS_REQUIRES3(type_var1, type_var2, type_var3, concept) \ +- typedef void (concept ::* func##type_var1##type_var2##type_var3##concept)(); \ ++#define BOOST_CLASS_REQUIRES3(type_var1, type_var2, type_var3, ns, concept) \ ++ typedef void (ns::concept ::* func##type_var1##type_var2##type_var3##concept)(); \ + template \ + struct concept_checking_##type_var1##type_var2##type_var3##concept { }; \ + typedef concept_checking_##type_var1##type_var2##type_var3##concept< \ +- BOOST_FPTR concept ::constraints> \ ++ &ns::concept ::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 ::* 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 ::* func##type_var1##type_var2##type_var3##type_var4##concept)(); \ + template \ + 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 ::constraints> \ ++ &ns::concept ::constraints> \ + concept_checking_typedef_##type_var1##type_var2##type_var3##type_var4##concept + + +-#endif +- +-#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION + template + struct require_same { }; + + template + struct require_same { typedef T type; }; +-#else +-// This version does not perform checking, but will not do any harm. +-template +-struct require_same { typedef T type; }; +-#endif ++ ++ template ++ struct SameTypeConcept ++ { ++ void constraints() { ++ typedef typename require_same::type req; ++ } ++ }; + + template + 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 { void constraints() {} }; + template <> struct IntegerConcept { void constraints() {} }; + template <> struct IntegerConcept { void constraints() {} }; +@@ -108,32 +87,24 @@ + template <> struct IntegerConcept { void constraints() {} }; + template <> struct IntegerConcept { void constraints() {} }; + // etc. +-#endif + + template + 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 { void constraints() {} }; + template <> struct SignedIntegerConcept { void constraints() {} }; + template <> struct SignedIntegerConcept { void constraints() {} }; + // etc. +-#endif + + template + 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 + { void constraints() {} }; + template <> struct UnsignedIntegerConcept +@@ -141,7 +112,6 @@ + template <> struct UnsignedIntegerConcept + { 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 + struct GeneratorConcept + { +@@ -327,7 +291,6 @@ + } + Func f; + }; +-#endif + + template + struct UnaryFunctionConcept +@@ -340,7 +303,6 @@ + Return r; + }; + +-#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION + template + struct UnaryFunctionConcept { + void constraints() { +@@ -348,7 +310,6 @@ + } + Func f; + }; +-#endif + + template + struct BinaryFunctionConcept +@@ -362,7 +323,6 @@ + Return r; + }; + +-#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION + template + struct BinaryFunctionConcept + { +@@ -373,7 +333,6 @@ + First first; + Second second; + }; +-#endif + + template + struct UnaryPredicateConcept +@@ -422,9 +381,7 @@ + function_requires< AssignableConcept >(); + function_requires< DefaultConstructibleConcept >(); + function_requires< EqualityComparableConcept >(); +-#ifndef BOOST_NO_STD_ITERATOR_TRAITS + typedef typename std::iterator_traits::value_type V; +-#endif + (void)*i; // require dereference operator + } + TT i; +@@ -446,7 +403,6 @@ + void constraints() { + function_requires< TrivialIteratorConcept >(); + // require iterator_traits typedef's +-#ifndef BOOST_NO_STD_ITERATOR_TRAITS + typedef typename std::iterator_traits::difference_type D; + function_requires< SignedIntegerConcept >(); + typedef typename std::iterator_traits::reference R; +@@ -455,7 +411,6 @@ + function_requires< ConvertibleConcept< + typename std::iterator_traits::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 >(); +-#ifndef BOOST_NO_STD_ITERATOR_TRAITS + function_requires< ConvertibleConcept< + typename std::iterator_traits::iterator_category, + std::forward_iterator_tag> >(); + typedef typename std::iterator_traits::reference reference; + reference r = *i; + ignore_unused_variable_warning(r); +-#endif + } + TT i; + }; +@@ -507,11 +460,9 @@ + { + void constraints() { + function_requires< ForwardIteratorConcept >(); +-#ifndef BOOST_NO_STD_ITERATOR_TRAITS + function_requires< ConvertibleConcept< + typename std::iterator_traits::iterator_category, + std::bidirectional_iterator_tag> >(); +-#endif + --i; // require predecrement operator + i--; // require postdecrement operator + } +@@ -536,12 +487,10 @@ + void constraints() { + function_requires< BidirectionalIteratorConcept >(); + function_requires< ComparableConcept >(); +-#ifndef BOOST_NO_STD_ITERATOR_TRAITS + function_requires< ConvertibleConcept< + typename std::iterator_traits::iterator_category, + std::random_access_iterator_tag> >(); + typedef typename std::iterator_traits::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::difference_type n; +-#else +- std::ptrdiff_t n; +-#endif + }; + + template +@@ -568,11 +513,7 @@ + i[n] = *i; // require element access and assignment + } + TT i; +-#ifndef BOOST_NO_STD_ITERATOR_TRAITS + typename std::iterator_traits::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 @@ libstdc++-v3 HOWTO: Chapter 17 - + @@ -144,9 +144,8 @@

Comments and suggestions are welcome, and may be sent to -Phil Edwards or -Gabriel Dos Reis. -
$Id: howto.html,v 1.6 2000/12/03 23:47:47 jsm28 Exp $ +the mailing list. +
$Id: howto.html,v 1.1 2000/12/10 04:03:09 pme Exp $

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 @@ libstdc++-v3 HOWTO: Chapter 18 - + @@ -259,9 +259,8 @@

Comments and suggestions are welcome, and may be sent to -Phil Edwards or -Gabriel Dos Reis. -
$Id: howto.html,v 1.7 2000/12/03 23:47:47 jsm28 Exp $ +the mailing list. +
$Id: howto.html,v 1.1 2000/12/10 04:04:54 pme Exp $

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 @@ libstdc++-v3 HOWTO: Chapter 19 - + @@ -26,7 +26,7 @@
@@ -67,58 +67,44 @@


-

Concept checkers

-

First the good news, then the bad news.

-

Good news: 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 vector - be "Assignable" (which means what you think it means). +

Concept checkers -- new and improved!

+

Better taste! Less fat! Literally!

+

In 1999, SGI added concept checkers 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 + vector be "Assignable" (which means what you think + it means). The checking was done during compilation, and none of + the code was executed at runtime.

-

The concept checkers allow the source code for vector to - declare -

-   __STL_CLASS_REQUIRES(_Tp, _Assignable);
-      
inside the template. _Tp is the element type of the - vector, and _Assignable is the concept to be checked (it is - defined in some back-end header files). When you instantiate - vector<MyType>, compile-time checking can be done on - whether MyType meets the requirements for vectors. +

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.

-

Most (all?) of the containers and sequences are capable of performing - concept checking during compilation, not just vector. +

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 + the + Boost libraries, and we are pleased to incorporate it into the + GNU C++ library.

-

If a concept is violated (thus causing a compilation failure), the - error messages printed by the compiler will be of the form -

-   _STL_ERROR::__foo_violation
-      
where foo 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. +

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.

-

Other names might be seen for more specific errors, for example, - _ERROR_IN_STL_CONTAINER::__begin_iterator_accessor_requirement_violation. +

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 + _GLIBCPP_NO_CONCEPT_CHECKS (yes, with the leading underscore), + _STL_NO_CONCEPT_CHECKS (also with the leading underscore), + or NDEBUG. 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 assert(), which is often turned + off for production builds.

-

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. -

-

Bad news: 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. -

-

Concept checking can be disabled when you build your code. Just - define (via -D or #define) the macro - _STL_NO_CONCEPT_CHECKS (yes, with the leading underscore). - In fact, this may already be defined in the library by default, - depending on what decision we come to. -

-

More good news: 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. +

Return to top of page or to the FAQ.

@@ -129,9 +115,8 @@

Comments and suggestions are welcome, and may be sent to -Phil Edwards or -Gabriel Dos Reis. -
$Id: howto.html,v 1.1 2000/12/10 04:04:54 pme Exp $ +the mailing list. +
$Id: howto.html,v 1.2 2001/03/25 00:01:56 pme Exp $

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 @@ libstdc++-v3 HOWTO: Chapter 20 - + @@ -212,9 +212,8 @@

Comments and suggestions are welcome, and may be sent to -Phil Edwards or -Gabriel Dos Reis. -
$Id: howto.html,v 1.1 2000/12/10 04:04:54 pme Exp $ +the mailing list. +
$Id: howto.html,v 1.2 2001/01/23 17:02:27 pme Exp $

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 @@ libstdc++-v3 HOWTO: Chapter 21 - + @@ -329,9 +329,8 @@

Comments and suggestions are welcome, and may be sent to -Phil Edwards or -Gabriel Dos Reis. -
$Id: howto.html,v 1.1 2000/12/10 04:04:55 pme Exp $ +the mailing list. +
$Id: howto.html,v 1.2 2001/02/07 00:03:20 pme Exp $

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 @@ libstdc++-v3 HOWTO: Chapter 22 - + @@ -225,9 +225,8 @@ functionality are given.

Comments and suggestions are welcome, and may be sent to -Phil Edwards or -Gabriel Dos Reis. -
$Id: howto.html,v 1.1 2000/12/10 04:04:55 pme Exp $ +the mailing list. +
$Id: howto.html,v 1.2 2001/02/07 00:03:20 pme Exp $

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 @@ libstdc++-v3 HOWTO: Chapter 23 - + @@ -235,9 +235,8 @@

Comments and suggestions are welcome, and may be sent to -Phil Edwards or -Gabriel Dos Reis. -
$Id: howto.html,v 1.4 2000/12/03 23:47:48 jsm28 Exp $ +the mailing list. +
$Id: howto.html,v 1.1 2000/12/10 04:04:55 pme Exp $

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 @@ libstdc++-v3 HOWTO: Chapter 24 - + @@ -84,9 +84,8 @@

Comments and suggestions are welcome, and may be sent to -Phil Edwards or -Gabriel Dos Reis. -
$Id: howto.html,v 1.5 2000/12/03 23:47:48 jsm28 Exp $ +the mailing list. +
$Id: howto.html,v 1.1 2000/12/10 04:04:55 pme Exp $

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 @@ libstdc++-v3 HOWTO: Chapter 25 - + @@ -86,9 +86,8 @@

Comments and suggestions are welcome, and may be sent to -Phil Edwards or -Gabriel Dos Reis. -
$Id: howto.html,v 1.5 2000/12/03 23:47:48 jsm28 Exp $ +the mailing list. +
$Id: howto.html,v 1.1 2000/12/10 04:04:55 pme Exp $

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 @@ libstdc++-v3 HOWTO: Chapter 26 - + @@ -132,9 +132,8 @@

Comments and suggestions are welcome, and may be sent to -Phil Edwards or -Gabriel Dos Reis. -
$Id: howto.html,v 1.7 2000/12/03 23:47:48 jsm28 Exp $ +the mailing list. +
$Id: howto.html,v 1.1 2000/12/10 04:04:56 pme Exp $

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 @@ libstdc++-v3 HOWTO: Chapter 27 - + @@ -415,9 +415,8 @@

Comments and suggestions are welcome, and may be sent to -Phil Edwards or -Gabriel Dos Reis. -
$Id: howto.html,v 1.2 2001/01/23 17:02:27 pme Exp $ +the mailing list. +
$Id: howto.html,v 1.3 2001/02/07 00:03:21 pme Exp $

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 @@ libstdc++-v3 HOWTO: Extensions - + @@ -141,8 +141,8 @@

Compile-time checks

-

Currently libstdc++-v3 uses the concept checkers from SGI's STL - 3.3 to perform optional +

Currently libstdc++-v3 uses the concept checkers from the Boost + library to perform optional compile-time checking of template instantiations of the standard containers. They are described in the linked-to page.

@@ -158,9 +158,8 @@

Comments and suggestions are welcome, and may be sent to -Phil Edwards or -Gabriel Dos Reis. -
$Id: howto.html,v 1.1 2000/12/10 04:04:56 pme Exp $ +the mailing list. +
$Id: howto.html,v 1.2 2001/03/25 00:01:56 pme Exp $

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. --> - + @@ -62,15 +62,16 @@ http://gcc.gnu.org/onlinedocs/libstdc++/faq/.

  • Bugs in gcc/g++ (not libstdc++-v3)
  • Bugs in the C++ language/lib specification
  • Things in libstdc++ that look like bugs -
  • Aw, that's easy to fix! @@ -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.
  • If you plan on hacking around with the makefiles, you - will need the tools autoconfand automake.
  • GNU Make is the only make that supports these makefiles. @@ -289,11 +290,11 @@ HREF="http://sources.redhat.com/automake/">automake. 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 CVS entry in the GNU software catalogue has a better description as well as a - link to the makers of CVS. + link to the makers of CVS.

    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.

    You have two options. You can get a newer cygwin1.dll (see the Cygwin paragraph in the - installation instructions). + installation instructions). Or you can get a prebuilt set of bits/std_limits.h and src/limitsMEMBERS.cc files from Mumit Khan's Cygwin-related website. @@ -381,15 +382,15 @@ HREF="http://sources.redhat.com/automake/">automake.

    3.3 Building DEC OSF kills the assembler

    The atomicity.h 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 as 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 as and arrange + for the GCC build to use it (or merge the sources and build + it during the bootstrap).

    Anyone who knows - the DEC assembler well enough to provide the equivalent of - these two pseudos would win praise and accolades from many. + the DEC assembler well enough to provide the equivalent of + these two pseudos would win praise and accolades from many.

    @@ -511,12 +512,12 @@ to the list, Nathan Myers announced that he has started a list of

    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 - sums - things up here. + 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 + sums + things up here.

    The g++-3 headers are @@ -541,8 +542,8 @@ to the list, Nathan Myers announced that he has started a list of

    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:

     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
        
    - Note that 2.95.x shipped with the -
    old v2 library which is no longer - maintained. + Note that 2.95.x shipped with the + 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 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). + just plain forgot, etc).

    -

    More information, including how to optionally disable the checks, - is available here. - The code itself might be disabled or replaced already. +

    More information, including how to optionally disable the checks, + is available here.

    @@ -579,7 +580,7 @@ http://clisp.cons.org/~haible/gccinclude-glibc-2.2-compat.diff on 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++ + the GCC patches mailing list. The libstdc++ contributors' page also talks about how to submit patches.

    @@ -720,9 +721,8 @@ HREF="http://gcc.gnu.org/ml/libstdc++/1999/msg00084.html">speculation.

    Comments and suggestions are welcome, and may be sent to -Phil Edwards or -Gabriel Dos Reis. -
    $Id: index.html,v 1.4 2001/03/01 22:32:23 pme Exp $ +the mailing list. +
    $Id: index.html,v 1.5 2001/03/25 00:01:57 pme Exp $

    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::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 @@ libstdc++-v3 Installation Instructions - + @@ -333,9 +333,8 @@

    Comments and suggestions are welcome, and may be sent to -Phil Edwards or -Gabriel Dos Reis. -
    $Id: install.html,v 1.3 2001/01/23 17:02:26 pme Exp $ +the mailing list. +
    $Id: install.html,v 1.4 2001/02/07 00:03:20 pme Exp $

    -- cgit v1.1