summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornobody <nobody@localhost>2001-03-14 15:36:54 +0000
committernobody <nobody@localhost>2001-03-14 15:36:54 +0000
commit9824c84c84aa377ab58269517d136d2ede80eb6b (patch)
treeaef6d0ea5c02b53e20d4dadba87ad9a61eabb1c1
parentce5e16b6ae28e66369cdcfc6c416db64fd0298ba (diff)
parent522a9f05fe041edbae8426e3e4c9a3f6b0a89d55 (diff)
downloadboost-9824c84c84aa377ab58269517d136d2ede80eb6b.tar.gz
This commit was manufactured by cvs2svn to create tag
'Version_1_21_1'. [SVN r9561]
-rw-r--r--.gitmodules88
-rw-r--r--README11
-rw-r--r--c++boost.gifbin0 -> 8819 bytes
-rw-r--r--development/more/directory-structure.htm859
-rw-r--r--index.htm170
m---------libs/array0
m---------libs/compose0
m---------libs/concept_check0
m---------libs/config0
m---------libs/conversion0
m---------libs/detail0
m---------libs/disjoint_sets0
m---------libs/functional0
m---------libs/graph0
-rw-r--r--libs/hdr_depend.html841
m---------libs/integer0
m---------libs/iterator0
-rw-r--r--libs/libraries.htm134
m---------libs/pool0
m---------libs/property_map0
m---------libs/python0
m---------libs/random0
m---------libs/rational0
m---------libs/regex0
m---------libs/smart_ptr0
m---------libs/static_assert0
m---------libs/test0
m---------libs/timer0
m---------libs/type_traits0
m---------libs/utility0
-rw-r--r--more/borland_cpp.html362
-rw-r--r--more/count_bdy.htm1166
-rw-r--r--more/discussion_policy.htm108
-rw-r--r--more/download.html127
-rw-r--r--more/faq.htm137
-rw-r--r--more/feature_model_diagrams.htm104
-rw-r--r--more/formal_review_process.htm115
-rw-r--r--more/generic_programming.html448
-rw-r--r--more/header.htm93
-rw-r--r--more/imp_vars.htm201
-rw-r--r--more/index.htm86
-rw-r--r--more/lib_guide.htm346
-rw-r--r--more/library_reuse.htm72
-rw-r--r--more/microsoft_vcpp.html281
-rw-r--r--more/regression.html256
-rw-r--r--more/submission_process.htm160
-rw-r--r--more/test_policy.htm93
-rw-r--r--people/aleksey_gurtovoy.htm50
-rw-r--r--people/aleksey_gurtovoy.jpgbin0 -> 12871 bytes
-rw-r--r--people/aleksey_gurtovoy_small.jpgbin0 -> 2698 bytes
-rw-r--r--people/beman_dawes.html37
-rw-r--r--people/beman_dawes.jpgbin0 -> 24875 bytes
-rw-r--r--people/beman_dawes_small.jpgbin0 -> 3207 bytes
-rw-r--r--people/darin_adler.htm48
-rw-r--r--people/darin_adler.jpgbin0 -> 30416 bytes
-rw-r--r--people/darin_adler_small.jpgbin0 -> 8651 bytes
-rw-r--r--people/dave_abrahams.htm29
-rw-r--r--people/dave_abrahams.jpgbin0 -> 30926 bytes
-rw-r--r--people/dave_abrahams_small.jpgbin0 -> 2383 bytes
-rw-r--r--people/dietmar_kuehl.htm42
-rw-r--r--people/dietmar_kuehl.jpgbin0 -> 30510 bytes
-rw-r--r--people/dietmar_kuehl_small.jpgbin0 -> 3349 bytes
-rw-r--r--people/ed_brey.htm51
-rw-r--r--people/ed_brey.jpgbin0 -> 13913 bytes
-rw-r--r--people/ed_brey_small.jpgbin0 -> 3082 bytes
-rw-r--r--people/gary_powell.htm31
-rw-r--r--people/gary_powell.jpgbin0 -> 13577 bytes
-rw-r--r--people/gary_powell_small.jpgbin0 -> 2665 bytes
-rw-r--r--people/gavin_collings.htm31
-rw-r--r--people/gavin_collings.jpgbin0 -> 16739 bytes
-rw-r--r--people/gavin_collings_small.jpgbin0 -> 2748 bytes
-rw-r--r--people/greg_colvin.htm28
-rw-r--r--people/greg_colvin.jpgbin0 -> 25661 bytes
-rw-r--r--people/greg_colvin_small.jpgbin0 -> 2603 bytes
-rw-r--r--people/howard_hinnant.htm34
-rw-r--r--people/howard_hinnant.jpgbin0 -> 19817 bytes
-rw-r--r--people/howard_hinnant_small.jpgbin0 -> 2531 bytes
-rw-r--r--people/jens_maurer.htm39
-rw-r--r--people/jens_maurer.jpgbin0 -> 15698 bytes
-rw-r--r--people/jens_maurer_small.jpgbin0 -> 2371 bytes
-rw-r--r--people/jeremy_siek.htm40
-rw-r--r--people/jeremy_siek.jpgbin0 -> 12867 bytes
-rw-r--r--people/jeremy_siek_small.jpgbin0 -> 1993 bytes
-rw-r--r--people/john_maddock.htm41
-rw-r--r--people/john_maddock.jpgbin0 -> 14611 bytes
-rw-r--r--people/john_maddock_small.jpgbin0 -> 1614 bytes
-rw-r--r--people/kevlin_henney.htm49
-rw-r--r--people/kevlin_henney.jpgbin0 -> 18107 bytes
-rw-r--r--people/kevlin_henney_small.jpgbin0 -> 2816 bytes
-rw-r--r--people/liequan_lee.htm33
-rw-r--r--people/liequan_lee.jpgbin0 -> 24165 bytes
-rw-r--r--people/liequan_lee_small.jpgbin0 -> 2176 bytes
-rw-r--r--people/mark_rodgers.htm36
-rw-r--r--people/mark_rodgers.jpgbin0 -> 23035 bytes
-rw-r--r--people/mark_rodgers_small.jpgbin0 -> 2345 bytes
-rw-r--r--people/nicolai_josuttis.jpgbin0 -> 19499 bytes
-rw-r--r--people/nicolai_josuttis_small.jpgbin0 -> 2580 bytes
-rw-r--r--people/paul_moore.htm38
-rw-r--r--people/paul_moore.jpgbin0 -> 12023 bytes
-rw-r--r--people/paul_moore_small.jpgbin0 -> 2318 bytes
-rw-r--r--people/people.htm119
-rw-r--r--people/peter_dimov.htm32
-rw-r--r--people/peter_dimov.jpgbin0 -> 16507 bytes
-rw-r--r--people/peter_dimov_small.jpgbin0 -> 2362 bytes
-rw-r--r--people/sean_corfield.jpgbin0 -> 27187 bytes
-rw-r--r--people/sean_corfield_small.jpgbin0 -> 3032 bytes
-rw-r--r--people/valentin_bonnard.htm27
-rw-r--r--people/valentin_bonnard.jpgbin0 -> 10547 bytes
-rw-r--r--people/valentin_bonnard_small.jpgbin0 -> 2237 bytes
-rw-r--r--people/william_kempf.htm35
-rw-r--r--people/william_kempf.jpgbin0 -> 10935 bytes
-rw-r--r--people/william_kempf_small.jpgbin0 -> 8995 bytes
-rw-r--r--status/compiler.cfg186
-rw-r--r--status/compiler_status.html104
-rw-r--r--status/cs-beos.html355
-rw-r--r--status/cs-hpux.html277
-rw-r--r--status/cs-irix.html371
-rw-r--r--status/cs-linux.html422
-rw-r--r--status/cs-solaris.html469
-rw-r--r--status/cs-tru64.html321
-rw-r--r--status/cs-win32.html579
-rw-r--r--status/regression.cfg69
-rw-r--r--status/regression.cpp487
123 files changed, 10768 insertions, 0 deletions
diff --git a/.gitmodules b/.gitmodules
index d72a772305..4be8bd9008 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -2,3 +2,91 @@
path = libs/smart_ptr
url = ../smart_ptr.git
fetchRecurseSubmodules = on-demand
+[submodule "functional"]
+ path = libs/functional
+ url = ../functional.git
+ fetchRecurseSubmodules = on-demand
+[submodule "property_map"]
+ path = libs/property_map
+ url = ../property_map.git
+ fetchRecurseSubmodules = on-demand
+[submodule "type_traits"]
+ path = libs/type_traits
+ url = ../type_traits.git
+ fetchRecurseSubmodules = on-demand
+[submodule "utility"]
+ path = libs/utility
+ url = ../utility.git
+ fetchRecurseSubmodules = on-demand
+[submodule "python"]
+ path = libs/python
+ url = ../python.git
+ fetchRecurseSubmodules = on-demand
+[submodule "graph"]
+ path = libs/graph
+ url = ../graph.git
+ fetchRecurseSubmodules = on-demand
+[submodule "config"]
+ path = libs/config
+ url = ../config.git
+ fetchRecurseSubmodules = on-demand
+[submodule "compose"]
+ path = libs/compose
+ url = ../compose.git
+ fetchRecurseSubmodules = on-demand
+[submodule "detail"]
+ path = libs/detail
+ url = ../detail.git
+ fetchRecurseSubmodules = on-demand
+[submodule "integer"]
+ path = libs/integer
+ url = ../integer.git
+ fetchRecurseSubmodules = on-demand
+[submodule "test"]
+ path = libs/test
+ url = ../test.git
+ fetchRecurseSubmodules = on-demand
+[submodule "disjoint_sets"]
+ path = libs/disjoint_sets
+ url = ../disjoint_sets.git
+ fetchRecurseSubmodules = on-demand
+[submodule "rational"]
+ path = libs/rational
+ url = ../rational.git
+ fetchRecurseSubmodules = on-demand
+[submodule "timer"]
+ path = libs/timer
+ url = ../timer.git
+ fetchRecurseSubmodules = on-demand
+[submodule "iterator"]
+ path = libs/iterator
+ url = ../iterator.git
+ fetchRecurseSubmodules = on-demand
+[submodule "conversion"]
+ path = libs/conversion
+ url = ../conversion.git
+ fetchRecurseSubmodules = on-demand
+[submodule "static_assert"]
+ path = libs/static_assert
+ url = ../static_assert.git
+ fetchRecurseSubmodules = on-demand
+[submodule "random"]
+ path = libs/random
+ url = ../random.git
+ fetchRecurseSubmodules = on-demand
+[submodule "array"]
+ path = libs/array
+ url = ../array.git
+ fetchRecurseSubmodules = on-demand
+[submodule "pool"]
+ path = libs/pool
+ url = ../pool.git
+ fetchRecurseSubmodules = on-demand
+[submodule "regex"]
+ path = libs/regex
+ url = ../regex.git
+ fetchRecurseSubmodules = on-demand
+[submodule "concept_check"]
+ path = libs/concept_check
+ url = ../concept_check.git
+ fetchRecurseSubmodules = on-demand
diff --git a/README b/README
new file mode 100644
index 0000000000..5f109fd009
--- /dev/null
+++ b/README
@@ -0,0 +1,11 @@
+For the most current version of Boost libraries and documentation, see:
+
+ http://www.boost.org
+
+Boost documentation is in HTML format.
+
+The highest level directory (which contains this README file) should have a file index.htm
+with links to all documentation. When viewing index.htm with a web browser, follow the
+"Libraries" link on the navigation bar for information on building boost libraries for
+your particular compiler and operating system.
+
diff --git a/c++boost.gif b/c++boost.gif
new file mode 100644
index 0000000000..58be431a3f
--- /dev/null
+++ b/c++boost.gif
Binary files differ
diff --git a/development/more/directory-structure.htm b/development/more/directory-structure.htm
new file mode 100644
index 0000000000..9ea200dc93
--- /dev/null
+++ b/development/more/directory-structure.htm
@@ -0,0 +1,859 @@
+<html>
+
+<head>
+<meta http-equiv="Content-Type"
+content="text/html; charset=iso-8859-1">
+<meta name="Template"
+content="C:\PROGRAM FILES\MICROSOFT OFFICE\OFFICE\html.dot">
+<meta name="GENERATOR" content="Microsoft FrontPage Express 2.0">
+<title></title>
+</head>
+
+<body bgcolor="#FFFFFF" link="#0000FF" vlink="#800080">
+
+<h2 align="center">A Proposal for the Boost Directory Structure</h2>
+
+<p align="center">By John Maddock.</p>
+
+<p>The following proposal consists of three sections: A list of
+requirements and objectives that the chosen structure must meet,
+a set of tools to facilitate working with boost, and an actual
+proposal for a structure that meets those requirements. In the
+past I have argued vociferously for a &quot;do as little as
+possible&quot; approach, however I have somewhat surprised myself
+by coming out in favour of a radical reorganisation here. In many
+ways though, the proposed directory structure is less important
+than its ability to meet the requirements listed below, nor is it
+the only structure that could arguably meet these requirements (especially
+as some requirements are contradictory). Finally a couple of
+caveats: All opinions expressed herein are my own; all ideas
+expressed herein belong to over people (especially the good ones!).
+Where possible credits are given, but my memory is far from
+infallible so speak up if you've been missed out.</p>
+
+<h2 align="center">Requirements</h2>
+
+<h3>Consistency</h3>
+
+<blockquote>
+ <p><b>Comment</b>: this should speak for itself.</p>
+</blockquote>
+
+<h3>Discoverability</h3>
+
+<p>That is a casual user browsing the directory structure should
+be able to immediately tell what belongs where.</p>
+
+<blockquote>
+ <p><b>Rationale</b>: some users read the documentation,
+ others wander around aimlessly saying: &quot;I wonder what's
+ in here?&quot;, speak up if you recognise anyone!</p>
+ <p><b>Rationale</b>: automated tools should be able to glean
+ most of the information they need direct from the directory
+ structure.</p>
+ <p><b>Comment</b>: This is probably the most important
+ requirement and guides the choice of many others.</p>
+</blockquote>
+
+<h3>Boost is a single library</h3>
+
+<blockquote>
+ <p>From an end users perspective boost should appear to be a
+ single library, with a single integrated build process etc.</p>
+ <p><b>Rationale</b>: This makes life much more comfortable
+ for end uses.</p>
+</blockquote>
+
+<h3>Boost is a collection of separate libraries</h3>
+
+<blockquote>
+ <p><b>Rationale</b>: some libraries have an existence of
+ their own outside of boost, this should be able to continue.</p>
+ <p><b>Rationale</b>: different developers maintain individual
+ boost libraries.</p>
+ <p><b>Rationale</b>: as boost grows it may be necessary to
+ split the library into multiple zip file downloads, each
+ download should encapsulate one domain, and provide all the
+ files necessary for that domain (that may mean that some
+ files appear in more than one zip file).</p>
+ <p><b>Rationale</b>: some users will want to split off (and
+ maybe freeze) those parts of boost that are being used by a
+ particular project. These sub-libraries can then be checked
+ into the users own version control system (for example into a
+ local cvs repository as a vendor branch), and maintained
+ alongside the users own source for that project.</p>
+ <p><b>Implication:</b> that there exists some mechanism for
+ locating and separating off all the files associated with a
+ particular boost library, this should also take into account
+ dependencies (both for headers and for binary dependencies).</p>
+</blockquote>
+
+<h3>Individual boost libraries can be checked out from the cvs
+repository</h3>
+
+<blockquote>
+ <p>For example &quot;<code>cvs checkout regex</code>&quot;
+ would check out the regex library alone.</p>
+ <p><b>Rationale</b>: This makes maintenance much easier
+ especially when working with cvs-branches.</p>
+ <p><b>Implication</b>: we could isolate libraries into
+ separate directories, however that's only a partial solution
+ which takes no account of library dependencies (something
+ that's likely to become increasingly important). A better
+ solution is to use cvs module-aliases: as a test case I've
+ defined the regex library as a module-alias (this seems to
+ work very well). In this case I had to specify dependencies
+ by hand (an error prone process), much better would be a tool
+ that produced a list of library aliases to insert directly
+ into the cvs modules file.</p>
+</blockquote>
+
+<h3>Boost libraries can have dependencies to other libraries</h3>
+
+<blockquote>
+ <p>There are three kinds of dependency possible:</p>
+ <ol>
+ <li>Libraries may depend upon the headers from other
+ boost libraries; these dependencies can be worked out
+ automatically.</li>
+ <li>Libraries may depend upon binaries from other boost
+ libraries; these dependencies can be worked out
+ automatically (hint: if library X depends upon header
+ H, and header H is from a library Y which has
+ mandatory source code associated with it, then there
+ is a binary dependency from X to Y).</li>
+ <li>Some domain specific libraries may depend upon third
+ party libraries (the python library for example).
+ These dependencies can not be deduced, and will
+ require meta-data to describe.</li>
+ </ol>
+ <p><b>Rationale: </b>these dependencies already exist in the
+ boost library.</p>
+</blockquote>
+
+<h3>Usable &quot;as is&quot;</h3>
+
+<blockquote>
+ <p>That is the library should be usable directly from the
+ checked out cvs tree, or the extracted zip file, without a
+ mandatory install process.</p>
+ <p><b>Rationale:</b> For single user installations it is
+ sufficient and often easier to work directly from the zip/cvs
+ structure.</p>
+ <p><b>Rationale: </b>For &quot;occasional developers&quot;
+ this simplifies their ability to port/debug parts of the
+ library, and then submit patches based on changes made,
+ without having to get involved with &quot;wrapper compilers&quot;
+ and other tools that have been suggested, which may or may
+ not function on their platform with their toolset.</p>
+ <p><b>Implication:</b> that all header files are located
+ together, and not split between multiple library paths.</p>
+ <p><b>Comments:</b> during the recent discussion it was
+ suggested splitting the header files into separate
+ directories under &quot;boost-root/src/libname/boost&quot;,
+ however this involves specifying a large number of -I options
+ on the command line in order to be able to use boost direct
+ from the cvs tree. One suggested workaround was to use a
+ wrapper-compiler to pass the long list of includes to the
+ compiler semi-automatically. However some compilers are
+ integrated with their respective IDE's (this would make boost
+ almost impossible to use from that IDE), other platforms/compilers
+ have a restricted command line length (mingw32 is a
+ particular culprit), the command line in such cases could
+ easily become longer than the maximum permitted.</p>
+</blockquote>
+
+<h3>Header include mechanism reflects library name</h3>
+
+<blockquote>
+ <p>We currently use:</p>
+ <p><code>#include &lt;boost/something.hpp&gt;</code></p>
+ <p>which immediately informs a casual browser of the code
+ that something.hpp is a part of the boost library and
+ separates it from:</p>
+ <p><code>#include &lt;rw/thread.h&gt; // this is Rogue Wave
+ library</code></p>
+ <p><b>Rationale</b>: This has worked well up to now and
+ should be continued.</p>
+ <p><b>Implication</b>: The boost-root/boost/ directory must
+ continue to exist (although there are possible arguments in
+ favour of making it boost-root/include/boost).</p>
+</blockquote>
+
+<h3>Libraries can have &quot;non-end user&quot; header files.</h3>
+
+<blockquote>
+ <p>There are several kinds of header that come into this
+ category:</p>
+ <blockquote>
+ <p><b>Power user headers</b>: headers that should only be
+ used by experts.</p>
+ <p><b>Headers for library reuse</b>: these headers can be
+ used by other boost libraries, but should not be used by
+ end users.</p>
+ <p><b>Domain specific headers</b>: large domain specific
+ libraries may have a large number of headers that should
+ not make it into the main boost-root/boost/ header
+ directory (graph for example).</p>
+ <p><b>Implementation headers</b>: libraries may have
+ headers that contain implementation code, these headers
+ should never be included by anything except other headers
+ <i>in this library</i>.</p>
+ </blockquote>
+ <p><b>Implication: </b>the main header directory may contain
+ sub-directories as follows:</p>
+ <blockquote>
+ <p>boost-root/boost/library-name/ for all non-end user
+ headers, including domain specific headers.</p>
+ <p>boost-root/boost/library-name/detail/ for all
+ implementation detail headers.</p>
+ </blockquote>
+</blockquote>
+
+<h3>Libraries can be combined into domains</h3>
+
+<blockquote>
+ <p>For example we may want to combine multiple math-related
+ libraries into a single &quot;numeric&quot; domain. In this
+ case each library in the domain would have it's own directory
+ under the domain name directory - for example headers for the
+ rational library may end up in boost-root/boost/numeric/rational/.</p>
+ <p><b>Rationale</b>: the aim here is to prevent the number of
+ top level libraries growing to an unmanageable number, and to
+ allow a logical group of libraries to be accessed with a
+ single name (for cvs checkouts or for building part of boost).</p>
+</blockquote>
+
+<h3>Root directory name reflects boost version</h3>
+
+<blockquote>
+ <p>That is the name of the root directory in the zip file
+ reflects the boost version number &quot;boost_1_1_9/&quot;
+ etc, subsequent directories - like the boost header file
+ directory - then split off from this.</p>
+ <p><b>Rationale: </b>Allows developers to have multiple
+ versions coexisting on their machine within a single
+ directory structure, developers can switch between versions
+ with a by changing their compilers include and library search
+ paths only.</p>
+</blockquote>
+
+<h3>Consistent handling of development code</h3>
+
+<blockquote>
+ <p>If there exists development or non-reviewed code in the
+ cvs tree then it should not interfere with release code or
+ exist in the same directory tree as the release code. Nor
+ should development code appear in zip files.</p>
+ <p><b>Rationale</b>: developers will typically work with
+ either the latest release code, or the latest development
+ code, they should be able to switch between them fairly
+ easily.</p>
+ <p><b>Rationale</b>: end users don't generally need to see
+ development code, it unnecessarily duplicates what's already
+ in the library and may lead to confusion as to what's release
+ code and what's still in development.</p>
+ <p><b>Implication</b>: There are a couple of ways of dealing
+ with this.</p>
+ <blockquote>
+ <p><b>Method 1</b>: provide a subdirectory &quot;<code>boost-root/development/library-name/</code>&quot;
+ that internally mirrors the directory structure of <code>boost-root/</code>,
+ to contain development code for library &quot;library-name&quot;.
+ This has the advantage of being easy to work with, but
+ requires setting multiple include and library search
+ paths, it also complicates multiple development versions
+ of the same library (for example multiple ports to new
+ platforms may proceed in parallel).</p>
+ <p><b>Method 2</b>: provide a separate top-level CVS
+ directory for development code, development code could
+ then be checked out with &quot;<code>cvs checkout
+ development&quot;</code> instead of &quot;<code>cvs
+ checkout boost&quot;</code>, otherwise this method is the
+ same as Method 1 above, and has the same pros and cons.</p>
+ <p><b>Method 3</b>: use a cvs branch for development work.
+ This allows multiple development efforts to proceed in
+ parallel, but may be harder to work with and keep in
+ synch with the main branch.</p>
+ </blockquote>
+ <p>Ideally<b> </b>I see no reason why either method 1 or 2
+ can't coexist with method 3, depending which method is easier
+ for the task in hand. Personally I prefer (2) to (1), but
+ that's just personal preference.</p>
+</blockquote>
+
+<h3>Mandatory Source code is centrally located</h3>
+
+<blockquote>
+ <p>That is that there is some central directory (let's call
+ it boost-root/src/) that contains all mandatory source files
+ for a particular library in its sub-directories: boost-root/src/library1/,
+ boost-root/src/library2/ etc.</p>
+ <p><b>Rationale: </b>This ensures that the source is easily
+ discoverable by the user; for example if a user suspects that
+ there may be a bug in library X, and decides to try and debug
+ the problem, they may want to add all the source code for
+ library X directly to their project to facilitate debugging.
+ (I appreciate that the build process <i>may</i> provide
+ debugging versions of the library, but it is still often
+ easier to add the source direct to the IDE's project,
+ depending upon how well the IDE handles debugging of external
+ libraries).</p>
+ <p><b>Rationale: </b>some IDE's have search paths for source
+ files as well as headers etc, this structure shortens the
+ paths to mandatory source files (this is more of a feature
+ request than a requirement).</p>
+</blockquote>
+
+<h3>Directories containing documentation contain an index.html
+file, and nothing but documentation</h3>
+
+<blockquote>
+ <p><b>Rationale</b>: Some file browsers (KFM for example)
+ will automatically display documentation when they see either
+ index.htm or index.html in the current directory. Any other
+ files located in that directory effectively become &quot;hidden&quot;
+ from the user. Whether this is an annoyance or a great
+ feature depends upon your point of view. Separating
+ documentation into it's own sub-directory solves this problem
+ (it happens to make installation of the documentation easier
+ as well).</p>
+ <p><b>Footnote</b>: actually KFM is usually quite intelligent
+ about displaying documentation, however it does sometimes get
+ it wrong.</p>
+</blockquote>
+
+<h3>Boost supports an integrated build process</h3>
+
+<blockquote>
+ <p><b>Rationale</b>: Currently most boost libraries are
+ &quot;headers only&quot;, those that are not have their own
+ build processes or none at all. This is confusing for the end
+ user, especially as boost is likely to get much larger.</p>
+</blockquote>
+
+<h3>Boost supports building of separate sub-libraries</h3>
+
+<blockquote>
+ <p><b>Rationale</b>: Building boost as a single monolithic
+ library is likely to put end users off - especially as boost
+ grows in size - few users will use all of boost in a single
+ project (even if they use all of it at some time or another).</p>
+ <p><b>Implication</b>: Build each boost library separately
+ using a consistent naming scheme incorporating the library
+ name and the compiler name: libboost_timer_gcc.so, libboost_regex_gcc.so,
+ lib_boost_thread_gcc.so etc. Provide a monolithic version of
+ the library as an option for those that want a simple life (this
+ is mainly more appropriate for static libraries where unused
+ library code doesn't make it into the executable).</p>
+</blockquote>
+
+<h3>Boost supports multiple compiler build options.</h3>
+
+<blockquote>
+ <p><b>Rationale</b>: some compilers ship with multiple run-time
+ libraries. For example the Borland C++ compiler comes with 6
+ different runtimes, any third party libraries must be built
+ with the same runtime options as the executable to which it
+ will be linked, failure to observe this rule leads to hard to
+ track down runtime crashes.</p>
+ <p><b>Implication</b>: boost libraries must each be built
+ multiple times with the same runtime variants that the
+ compiler ships with. As before name mangling separates the
+ variants: </p>
+</blockquote>
+
+<pre> boost_regex_bc55_cw.lib
+ boost_regex_bc55_cwi.lib
+ boost_regex_bc55_cwi.dll
+ boost_regex_bc55_cwm.lib
+ boost_regex_bc55_cwmi.lib
+ boost_regex_bc55_cwmi.dll
+ boost_regex_bc55_cp.lib
+ boost_regex_bc55_cpi.lib
+ boost_regex_bc55_cpi.dll</pre>
+
+<blockquote>
+ <p>(for non-Borland users the suffixes chosen here reflect
+ the names of Borland's own runtime libraries).</p>
+</blockquote>
+
+<h3>Boost's build system uses the minimal amount of meta-data
+required.</h3>
+
+<blockquote>
+ <p><b>Rationale</b>: some meta-data is likely to be required,
+ but to reduce maintenance requirements this should be as
+ small as possible. Generally speaking the smaller the meta-data
+ requirement the more likely it is that the build system is in
+ synch with the library. The worst case would be hand-crafted
+ makefiles (hard to maintain), the best case no meta-data at
+ all; for example the directory structure describes the
+ library well enough that makefiles (or their equivalent) can
+ be automatically generated.</p>
+</blockquote>
+
+<h3>Boost supports installation to a central location</h3>
+
+<blockquote>
+ <p><b>Rationale</b>: most unix variants more or less require
+ an install step before using third party libraries, this also
+ allows network installs (for multiple compilers and/or
+ platforms if required), from a single source tree.</p>
+</blockquote>
+
+<blockquote>
+ <p><b>Implication</b>: Keep the boost directory structure as
+ close as possible to the install structure to simplify the
+ installation process (strictly speaking this is not an
+ absolute requirement, but cross-platform installation is hard
+ enough with making it any harder than it needs to be). The
+ easiest way is to keep the documentation/header/build trees
+ separate.</p>
+</blockquote>
+
+<h3>The boost directory structure should be &quot;optimally
+branched&quot;</h3>
+
+<blockquote>
+ <p>This is a nebulous requirement that is based as much on
+ personal preference as anything else.</p>
+ <p><b>Rationale</b>: the directory structure is more &quot;discoverable&quot;
+ if it branches consistently - that is with no directories
+ with a massive number of entries.</p>
+ <p><b>Implication</b>: where appropriate combine related
+ libraries into domains.</p>
+ <p><b>Implication</b>: avoid directories with a single sub-directory
+ entry (redundancy).</p>
+</blockquote>
+
+<h2 align="center">Proposed tools to aid boost management (build
+system)</h2>
+
+<p>While writing the requirements above one theme kept
+reoccurring; that of interdependency of boost libraries, and the
+need for an automated tool to deal with this problem. In fact
+from a code-reuse point of view, we need a library that describes
+the boost library and determines library dependencies that can
+then be reused in multiple tools. In my view the gains in ease of
+management, and automatic generation of makefiles etc, means that
+these tools should be developed regardless of the actual
+directory structure chosen (although the code will probably be
+dependent upon the directory structure chosen).</p>
+
+<h3>Dependency library</h3>
+
+<blockquote>
+ <p>This library would define two types:</p>
+ <p><b>Library</b>: defines the files that belong to a
+ particular library, plus header file dependencies and a list
+ of binary dependencies to other boost libraries.</p>
+ <p><b>Libraries</b>: a collection of Library objects, also
+ maintains a database of which header belongs to which library
+ (used to calculate binary dependencies).</p>
+ <p>As far as is possible, these types should be able to load
+ themselves directly from the boost directory structure, with
+ only a minimal amount of meta-data used to describe the
+ unusual cases.</p>
+</blockquote>
+
+<h3>Paths library</h3>
+
+<p>In order for the dependency library to do it's job it is
+necessary to iterate over a directory structure, join and split
+path names, and convert path names to/from a platform specific
+format. For example to insert relative-paths into makefiles which
+may be used on platforms other than the one on which the makefile
+is generated. Some, but by no means all, of this functionality is
+already covered by Dietmar Kühl's dir_it library.</p>
+
+<h3>Automatic alias generation</h3>
+
+<p>This is a short program that just iterates through a Libraries
+collection and prints out the dependencies, so that the result
+can be cut and pasted into the cvs modules file.</p>
+
+<h3>Boost distiller</h3>
+
+<p>This is almost the same program as the alias generator, but
+copies files to a new location instead of printing them out. Used
+to &quot;distil&quot; out a subset of the boost library (including
+dependencies). This can be used to: split boost into multiple (domain
+specific) zip files for easier download, or split out that subset
+of boost that is being used by a particular project (for
+integration with the project without getting the whole of boost).</p>
+
+<h3>Build system</h3>
+
+<p>By combining the description of the boost library contained in
+a Libraries object with a description of the compiler/platform in
+use, it is possible to do one of two things: directly build the
+library, or output compiler/platform specific makefiles for
+distribution with boost. For brevity I'm going to skip over a
+description of this here - my pencil and paper sketch has a list
+of around 14 points of variation between compilers, and another
+list of 7 options for each compiler configuration (release, debug,
+static, dynamic etc). Probably even this fairly long list is not
+complete.</p>
+
+<p>I'm assuming that the build system will probably output
+makefiles in the first instance; apart from anything else, most
+compilers come with some kind of make, using this avoids the need
+for the end user to have to build/install any tools that do not
+ship with their compiler. Here I'm assuming that the boost
+library maintainers periodically generate the makefiles, and then
+ship them with the library.</p>
+
+<h2 align="center">The directory structure</h2>
+
+<table border="0" cellpadding="7" cellspacing="1" width="100%">
+ <tr>
+ <td valign="top" width="6%">&nbsp;</td>
+ <td valign="top" width="44%" bgcolor="#008080">Directory</td>
+ <td valign="top" width="43%" bgcolor="#008080">Description</td>
+ <td valign="top" width="7%">&nbsp;</td>
+ </tr>
+ <tr>
+ <td valign="top" width="6%">&nbsp;</td>
+ <td valign="top" width="44%" bgcolor="#C0C0C0">Boost-root/boost/</td>
+ <td valign="top" width="43%" bgcolor="#C0C0C0">All entry
+ point boost headers, mainly these should be called &quot;library-name.hpp&quot;</td>
+ <td valign="top" width="7%">&nbsp;</td>
+ </tr>
+ <tr>
+ <td valign="top" width="6%">&nbsp;</td>
+ <td valign="top" width="44%" bgcolor="#C0C0C0">Boost-root/boost/library-name/</td>
+ <td valign="top" width="43%" bgcolor="#C0C0C0">All domain
+ specific headers, all &quot;expert-user&quot; non-entry
+ point headers.</td>
+ <td valign="top" width="7%">&nbsp;</td>
+ </tr>
+ <tr>
+ <td valign="top" width="6%">&nbsp;</td>
+ <td valign="top" width="44%" bgcolor="#C0C0C0">Boost-root/boost/library-name/detail/</td>
+ <td valign="top" width="43%" bgcolor="#C0C0C0">All
+ implementation private headers.</td>
+ <td valign="top" width="7%">&nbsp;</td>
+ </tr>
+ <tr>
+ <td valign="top" width="6%">&nbsp;</td>
+ <td valign="top" width="44%" bgcolor="#C0C0C0">Boost-root/src/library-name/</td>
+ <td valign="top" width="43%" bgcolor="#C0C0C0">All
+ mandatory source files.</td>
+ <td valign="top" width="7%">&nbsp;</td>
+ </tr>
+ <tr>
+ <td valign="top" width="6%">&nbsp;</td>
+ <td valign="top" width="44%" bgcolor="#C0C0C0">Boost-root/src/library-name/config/</td>
+ <td valign="top" width="43%" bgcolor="#C0C0C0">Any
+ private configuration code (for example autoconf scripts),
+ if these grow then we could move to an integrated
+ configure system in Boost-root/config/ but that isn't
+ currently necessary.</td>
+ <td valign="top" width="7%">&nbsp;</td>
+ </tr>
+ <tr>
+ <td valign="top" width="6%">&nbsp;</td>
+ <td valign="top" width="44%" bgcolor="#C0C0C0">Boost-root/src/library-name/build/</td>
+ <td valign="top" width="43%" bgcolor="#C0C0C0">Temporary
+ location for private build systems, until the boost-wide
+ integrated build comes on line.</td>
+ <td valign="top" width="7%">&nbsp;</td>
+ </tr>
+ <tr>
+ <td valign="top" width="6%">&nbsp;</td>
+ <td valign="top" width="44%" bgcolor="#C0C0C0">Boost-root/docs/</td>
+ <td valign="top" width="43%" bgcolor="#C0C0C0">All common
+ documentation.</td>
+ <td valign="top" width="7%">&nbsp;</td>
+ </tr>
+ <tr>
+ <td valign="top" width="6%">&nbsp;</td>
+ <td valign="top" width="44%" bgcolor="#C0C0C0">Boost-root/docs/library-name/</td>
+ <td valign="top" width="43%" bgcolor="#C0C0C0">All
+ documentation for &quot;library-name&quot;; must include
+ an index.htm file.</td>
+ <td valign="top" width="7%">&nbsp;</td>
+ </tr>
+ <tr>
+ <td>&nbsp;</td>
+ <td valign="top" bgcolor="#C0C0C0">Boost-root/licence</td>
+ <td bgcolor="#C0C0C0">A &quot;generic&quot; boost licence
+ that describes the minimal guarantees made by all boost
+ libraries (free for commercial use etc), with sub-directories
+ for those boost libraries that have their own licences (currently
+ just regex and graph, but this number is likely to grow).</td>
+ <td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td valign="top" width="6%">&nbsp;</td>
+ <td valign="top" width="44%" bgcolor="#C0C0C0">Boost-root/tests/library-name/</td>
+ <td valign="top" width="43%" bgcolor="#C0C0C0">All test
+ programs for &quot;library-name&quot;. These may be
+ either: a single (multi-file) test program, multiple
+ single file test programs, or multiple sub-directories (one
+ for each test program).</td>
+ <td valign="top" width="7%">&nbsp;</td>
+ </tr>
+ <tr>
+ <td valign="top" width="6%">&nbsp;</td>
+ <td valign="top" width="44%" bgcolor="#C0C0C0">Boost-root/examples/library-name/</td>
+ <td valign="top" width="43%" bgcolor="#C0C0C0">All
+ example programs for &quot;library-name&quot;. These may
+ be either: a single (multi-file) example program,
+ multiple single file example programs, or multiple sub-directories
+ (one for each example program).</td>
+ <td valign="top" width="7%">&nbsp;</td>
+ </tr>
+ <tr>
+ <td valign="top" width="6%">&nbsp;</td>
+ <td valign="top" width="44%" bgcolor="#C0C0C0">Boost-root/tools/tool-name/</td>
+ <td valign="top" width="43%" bgcolor="#C0C0C0">Contains
+ all files required to build and use the specified tool (makefile
+ generators etc).</td>
+ <td valign="top" width="7%">&nbsp;</td>
+ </tr>
+ <tr>
+ <td valign="top" width="6%">&nbsp;</td>
+ <td valign="top" width="44%" bgcolor="#C0C0C0">Boost-root/build/</td>
+ <td valign="top" width="43%" bgcolor="#C0C0C0">The boost
+ build system. Consists of a collection of makefiles (one
+ for each supported compiler), plus subdirectories: libs/
+ for built libraries, bin/ for built dll's (win32 only)
+ and obj/ for object files.</td>
+ <td valign="top" width="7%">&nbsp;</td>
+ </tr>
+</table>
+
+<p>&nbsp;</p>
+
+<p>There are a couple of myths surrounding this structure that
+need exploding:</p>
+
+<h4>It is hard to check in new libraries to the cvs repository</h4>
+
+<p>Not true: if the submission arrives as a zip file containing
+the directory structure described above, then the command:</p>
+
+<p><code>cvs import boost library-name library-name-sub</code></p>
+
+<p>will import the whole of the <i>current</i> directory tree and
+&quot;intermingle&quot; it with the existing boost tree in the
+repository.</p>
+
+<p>There is one caveat to this however: if the imported source
+contains some files that were already in the boost directory tree
+(probably not a common situation), then an additional merge and
+resolve conflicts step arises:</p>
+
+<p>On the main branch working copy:</p>
+
+<p><code>cvs checkout -jlibrary-name-sub boost</code></p>
+
+<p>Resolve any conflicts, and then:</p>
+
+<p><code>cvs commit</code></p>
+
+<p>The latter two steps should not be necessary in most cases,
+and occur whatever directory structure is used (it is probably
+easier in most cases to resolve such conflicts manually before
+importing the new sources).</p>
+
+<h4>It is hard to checkout or to commit individual boost
+libraries.</h4>
+
+<p>By using cvs aliases (defined in the modules file) this
+situation does not arise, just specify the module/alias name when
+performing a checkout/commit.</p>
+
+<h2 align="center">Migrating to the new structure</h2>
+
+<p>This is probably the hardest and most painful part of the
+whole process. I'm going to suggest a migration method as follows:</p>
+
+<ol>
+ <li>Instigate a moratorium on cvs commits.</li>
+ <li>Copy the files to the new structure and commit the
+ changes, leaving the boost-root/libs/ directory in place
+ for now.</li>
+ <li>Fix html links, and documentation descriptions of file
+ locations.</li>
+ <li>Fix any library specific scripts/makefiles.</li>
+ <li>Publish the new structure (as a zip-file beta
+ distribution) and ask boost users/authors to check that
+ everything looks OK.</li>
+ <li>Delete the boost-root/libs/ directory (actually this is
+ quite hard, as cvs has no method for removing whole
+ directory trees).</li>
+ <li>Lift the moratorium on changes.</li>
+ <li>Publish the next boost revision with the new structure.</li>
+</ol>
+
+<p>The whole process described above is quite likely to take 1-2
+weeks, during which no changes can be committed; this is going to
+require a fair amount of co-ordination between developers (actually
+this applies to any major change to the directory structure,
+irrespective of what the change is).</p>
+
+<p>You will note that I haven't mentioned a time scale for the
+associated tools that I have suggested, probably these will need
+to be developed after the directory structure changes - although
+I believe it is possible to develop a minimal subset (the library
+description and alias generator) before making the changes if
+that is required.</p>
+
+<p>&nbsp;</p>
+
+<p>There were a couple of other directory structures that were
+evaluated while preparing this document:</p>
+
+<p><i>The &quot;half way house structure&quot;:</i></p>
+
+<p>This is the same as the current structure, but moves mandatory
+source files to boost-root/src/libname. This is easier to migrate
+to from the current structure, but was felt to be neither one
+thing nor the other.</p>
+
+<p><i>The &quot;skinny root structure&quot;:</i></p>
+
+<p>This was proposed by John David, and Lois Goldthwaite, and
+moves the contents of the current boost-root/libs/ directory into
+boost-root/boost/. My main objection to this proposal is that it
+is less &quot;discoverable&quot; than the one presented here - my
+immediate reaction was &quot;where has everything gone&quot; - I
+also dislike mixing headers and non-headers in the same tree.
+However I'm prepared to accept that this could just be due to
+personal bias.</p>
+
+<h2 align="center">Acknowledgements</h2>
+
+<p>The following people have had their ideas reused,
+reconstituted and reformulated :-)</p>
+
+<p>Beman Dawes, Ed Brey, Walter E. Brown, John (EBo) David, Jeff
+Garland, Lois Goldthwaite, Jens Maurer, Jeff Squyres, Gary Powell
+and Daryle Walker.</p>
+
+<p>
+<hr>
+<p>
+
+<h2 align="center">An Alternative Directory Structure</h2>
+
+<p align="center">By Jens Maurer</p>
+
+I favor the following structure, which puts different emphasis on the
+some of the requirements.
+
+<p>
+
+<table border="1">
+
+<tr>
+<th>Directory</th>
+<th>Description</th>
+</tr>
+
+<tr>
+<td>Boost-root/include/boost/</td>
+<td>All entry-point boost headers, mainly these should be called
+"library-name.hpp".</td>
+</tr>
+
+<tr>
+<td>Boost-root/include/boost/.../</td>
+<td>Domain-specific subdirectory; the "..." can be empty or
+arbitrarily nested while observing the "optimally branched"
+requirement.</td>
+</tr>
+
+<tr>
+<td>Boost-root/include/boost/.../library-name/</td>
+<td>All domain-specific headers, all "expert-user" non-entry point
+headers.</td>
+</tr>
+
+<tr>
+<td>Boost-root/include/boost/.../library-name/detail/</td>
+<td>All implementation private headers.</td>
+</tr>
+
+<tr>
+<td>Boost-root/libs/.../</td>
+<td>Main directory for a given subdomain; the "..." can be empty or
+arbitrarily nested while observing the "optimally branched"
+requirement. The "..." must correspond to some "..." in the header
+tree. The directory should contain a "index.html" which links to all
+libraries and subdomains contained.</td>
+</tr>
+
+<tr>
+<td>Boost-root/libs/.../library-name/</td>
+<td>Main directory for a given library.</td>
+</tr>
+
+<tr>
+<td>Boost-root/libs/.../library-name/src/</td>
+<td>All mandatory source files for the library.</td>
+</tr>
+
+<tr>
+<td>Boost-root/libs/.../library-name/build/</td>
+<td>Temporary location for private build system, until the boost-wide
+integrated build becomes available.</td>
+</tr>
+
+<tr>
+<td>Boost-root/libs/.../library-name/config/</td>
+<td>Any private configuration code (for example, autoconf
+scripts).</td>
+</tr>
+
+<tr>
+<td>Boost-root/libs/.../library-name/doc/</td>
+<td>All documentation for the library.</td>
+</tr>
+
+<tr>
+<td>Boost-root/libs/.../library-name/test/</td>
+<td>All regression tests for the library, suitable for the regression
+test suite. Due to test execution time constraints, not all of the tests
+may actually be added to "regression.cfg".</td>
+</tr>
+
+<tr>
+<td>Boost-root/libs/.../library-name/example/</td>
+<td>All example programs for "library-name". These may be either: a
+single (multi-file) example program, multiple single file example
+programs, or multiple sub-directories (one for each example
+program).</td>
+</tr>
+
+<tr>
+<td>Boost-root/tools/tool-name/</td>
+<td>Contains all files required to build and use the specified tool
+(makefile generators etc).</td>
+</tr>
+
+<tr>
+<td>Boost-root/build</td>
+<td>The boost build system (user front-end; tools go in the "tools"
+hierarchy). Details still hazy.</td>
+</tr>
+
+<tr>
+<td>Boost-root/more/license.html</td>
+<td>A "generic" boost license that describes the minimal guarantee
+provided by all boost libraries. This should get a prominent link on
+the main boost page.</td>
+</tr>
+
+</table>
+
+<p>
+Note that the "include" path component contains only one subdirectory
+"boost" and thus violates the "optimally branched" requirement. It
+helps with discoverability, though, because people know what to expect
+under any directory named "include", i.e. header files.
+
+</body>
+</html>
diff --git a/index.htm b/index.htm
new file mode 100644
index 0000000000..24dd4088fc
--- /dev/null
+++ b/index.htm
@@ -0,0 +1,170 @@
+<html>
+
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
+<meta name="ProgId" content="FrontPage.Editor.Document">
+<title>Boost C++ Libraries</title>
+</head>
+
+<body bgcolor="#FFFFFF" text="#000000">
+
+<table border="1" bgcolor="#007F7F" cellpadding="2">
+ <tr>
+ <td bgcolor="#FFFFFF"><img src="c++boost.gif" alt="c++boost.gif (8819 bytes)" width="277" height="86"></td>
+ <td><a href="index.htm"><font face="Arial" color="#FFFFFF"><big>Home</big></font></a></td>
+ <td><a href="libs/libraries.htm"><font face="Arial" color="#FFFFFF"><big>Libraries</big></font></a></td>
+ <td><a href="people/people.htm"><font face="Arial" color="#FFFFFF"><big>People</big></font></a></td>
+ <td><a href="more/faq.htm"><font face="Arial" color="#FFFFFF"><big>FAQ</big></font></a></td>
+ <td><a href="more/index.htm"><font face="Arial" color="#FFFFFF"><big>More</big></font></a></td>
+ </tr>
+</table>
+<h1>Welcome to Boost.org!</h1>
+<p>The Boost web site provides free, peer-reviewed, C++ <a href="libs/libraries.htm">libraries</a>.
+The emphasis is on portable libraries which work well with the C++ Standard
+Library.</p>
+<p>See the <a href="more/download.html">Download</a>&nbsp; page for installation
+information.&nbsp; The source code is also publicly accessible in a CVS <a href="http://cvs.sourceforge.net/cgi-bin/cvsweb.cgi/?cvsroot=boost">repository</a>.</p>
+<p>See <a href="status/compiler_status.html">Compiler Status</a> to find out what
+library works with which compiler.</p>
+<p><a href="more/lib_guide.htm">Library Requirements and Guidelines</a> and <a href="more/submission_process.htm">Library
+Submission Process</a> provides basic information for library authors.</p>
+<p>If you are interested in who writes the libraries and maintains the web site,
+check out <a href="people/people.htm">people</a>.</p>
+<p>The <a href="more/faq.htm">FAQ</a> answers questions we hope someone will
+bother to ask.</p>
+<h2><a name="Mailing List">Membership</a></h2>
+<p>If you are interested in Boost, please join our mailing list for
+discussions of both technical and site-related issues, and to participate in
+formal reviews of proposed libraries. Discussions can be received via email in summary or in full, or
+viewed online via a web browser. We use the <a href="http://www.egroups.com">eGroups</a>
+list hosting service. Subscribe or unsubscribe by sending email to <a href="mailto:boost-subscribe@egroups.com">boost-subscribe@egroups.com</a>&nbsp;
+or <a href="mailto:boost-unsubscribe@egroups.com">boost-unsubscribe@egroups.com</a>
+respectively, or go to the <a href="http://www.egroups.com/list/boost">mailing list home page</a>.&nbsp; Dave Abrahams,
+Beman Dawes, and Jens Maurer are the list
+moderators.</p>
+<p>Boost also has a low-volume <a href="http://www.egroups.com/list/boost-announce">announce-only
+mailing list</a> which announces upcoming formal reviews and software releases.</p>
+<p>For mailing list members only, preliminary libraries under discussion are
+available from the eGroups <a href="http://www.egroups.com/files/boost/">Files
+section</a> (formerly called the &quot;vault&quot;).</p>
+<p>Beman Dawes is the Boost <a name="webmaster">webmaster</a>; email him at <a href="mailto:beman@boost.org">beman@esva.net</a>
+with any concerns you don't want to just post to the mailing list.</p>
+<h2>Latest News</h2>
+<p>March 14, 2001 - Version 1.21.1</p>
+<ul>
+ <li>New <a href="more/download.html">download page</a>.&nbsp; The .zip and .tar.gz
+ files now live on the SourceForge ftp site.</li>
+ <li><a href="libs/graph/doc/index.html">Graph Library</a>: Minor docs fixes.</li>
+ <li><a href="libs/python/doc/index.html">Python Library</a>: Minor docs fixes.</li>
+ <li><a href="libs/regex/index.htm">Regex Library</a>: Minor portability fixes.</li>
+</ul>
+<p>March 9, 2001 - Version 1.21.0</p>
+<ul>
+ <li><a href="libs/utility/iterator_adaptors.htm">Iterator Adaptor Library</a>
+ added. Adapt a base type into a standard conforming iterator, and more, from
+ Dave Abrahams, Jeremy Siek, and John Potter.</li>
+ <li><a href="libs/pool/doc/index.html">Pool Library</a> added. Memory pool
+ management from Steve Cleary.</li>
+ <li><a href="libs/test/doc/index.htm">Test Library</a> added.&nbsp; Support
+ for program testing and execution from Beman Dawes.</li>
+ <li><a href="more/generic_programming.html">Generic Programming Techniques</a>
+ page added, contributed by Dave Abrahams.</li>
+ <LI> <a href="libs/graph/doc/table_of_contents.html">Graph Library</a>:&nbsp;
+ Updated use of iterator adaptors. Changed <tt>operator==</tt> for
+ <tt>adjacency_list::edge_descriptor</tt> to improve semantics for
+ multigraphs. Moved <tt>adjacency_iterator_generator</tt> from
+ namespace <tt>detail</tt> to <tt>boost</tt> and added <a
+ href="libs/graph/doc/adjacency_iterator.html">documentation</a>. Renamed <tt>dynamic_components()</tt> to <a
+ href="libs/graph/doc/incremental_components.html"><tt>incremental_components()</tt></a><tt>,</tt> better matching graph literature terminology. Cleaned up
+ interface of <a href="libs/graph/doc/connected_components.html">
+ <tt>connected_components()</tt></a> and created separate <a
+ href="libs/graph/doc/strong_components.html">
+ <tt>strong_components()</tt></a> function using Tarjan's more
+ efficient algorithm. Fixed documentation figures for
+ <a href="libs/graph/doc/adjacency_list.html">
+ <tt>adjacency_list</tt></a> and <a
+ href="libs/graph/doc/adjacency_matrix.html">
+ <tt>adjacency_matrix</tt></a>. Added docs for <a
+ href="libs/graph/doc/cuthill_mckee_ordering.html"><tt>cuthill_mckee_ordering()</tt></a> algorithm.
+ <li><a href="libs/python/doc/index.html">Python Library</a> upgraded.&nbsp; Better compatibility with Python 2.0, NULL pointers and smart-pointers get converted to/from python None,
+ massive documentation review/revision.</li>
+ <li> <a href="libs/regex/index.htm">Regular Expression Library</a>:&nbsp;
+ Minor
+ fixes for Unicode platforms.</li>
+ <li> <a href="libs/type_traits/index.htm">Type Traits Library</a> upgraded:
+ Major revision.</li>
+</ul>
+<p>February 10, 2001 - Version 1.20.2</p>
+<ul>
+ <li><a href="libs/array_traits/index.html">Array traits</a> minor portability fix.
+ <li><a href="libs/graph/doc/table_of_contents.html">Graph Library</a> - Changes to <a href="libs/graph/doc/breadth_first_search.html">
+ <tt>breadth_first_search()</tt></a> re: <a href="libs/graph/doc/BFSVisitor.html">BFSVisitor</a>,
+ added max flow algorithms
+ <a href="libs/graph/doc/edmunds_karp_max_flow.html">
+ <tt>edmunds_karp_max_flow()</tt></a> and
+ <a href="libs/graph/doc/push_relabel_max_flow.html">
+ <tt>push_relabel_max_flow()</tt></a>, added <a href="libs/graph/doc/adjacency_matrix.html"><tt>adjacency_matrix</tt></a> graph
+ class, added <a href="libs/graph/doc/filtered_graph.html"><tt>filtered_graph</tt></a>
+ adaptor</li>
+ <li><a href="libs/integer/index.htm">Integer Library:</a> minor fixes to integer.hpp and integer_test.cpp</li>
+ <li><a href="more/microsoft_vcpp.html">Portability Hints: Microsoft Visual C++</a> added.
+ <li><a href="libs/random/index.html">Random Number Library</a>: Minor portability fixes
+ <li><a href="libs/rational/index.html">Rational Number Library</a>: documentation updates,
+efficiency improvements, co-operates with user-defined types, regression tests
+ <li> <a href="libs/regex/index.htm">Regular Expression Library</a>&nbsp; minor
+ updates.</li>
+ <li><a href="libs/smart_ptr/index.htm">Smart Pointer Library</a>: shared_ptr
+ example added..</li>
+ <li><a href="libs/timer/index.htm">Timer Library:</a> changed to an all inline implementation.</li>
+</ul>
+<p>January 10, 2001 - Version 1.20.1</p>
+<ul>
+ <li><a href="boost/compressed_pair.hpp">compressed_pair.hpp</a> minor update
+ fixes test failures of other libraries under VC++.</li>
+ <li><a href="libs/graph/doc/table_of_contents.html">Graph Library</a> minor
+ updates.</li>
+ <li> <a href="libs/regex/index.htm">Regular Expression Library</a>&nbsp; minor
+ updates.</li>
+ <li> Minor website fixes including missing files in boost_all.zip.</li>
+</ul>
+<p>January 6, 2001 - Version 1.20.0</p>
+<ul>
+ <li><a href="libs/conversion/index.htm">Conversion Library</a> added - <a href="libs/conversion/cast.htm">cast</a>
+ and <a href="libs/conversion/lexical_cast.htm">lexical_cast</a> headers from
+ Dave Abrahams and Kevlin Henney.</li>
+ <li>Web site moved to a larger host after the old ISP collapsed
+ unexpectedly.</li>
+ <li>Regression tests now include execution testing.&nbsp; See <a href="status/compiler_status.html">Compiler Status</a>.</li>
+ <li><a href="more/discussion_policy.htm">Discussion Policy</a> page added.</li>
+ <li><a href="libs/array/index.htm">Array Library</a> minor documentation improvements.</li>
+ <li><a href="libs/graph/doc/table_of_contents.html">Graph Library</a> minor
+ updates.</li>
+ <li> <a href="libs/regex/index.htm">Regular Expression Library</a>&nbsp; minor
+ updates.</li>
+</ul>
+<p>December 10, 2000 - Version 1.19.0</p>
+<ul>
+ <li><a href="libs/concept_check/concept_check.htm">Concept Check Library</a>
+ added - tools for generic programming from Jeremy Siek.&nbsp;</li>
+ <li><a href="libs/python/doc/index.html">Python Library</a> added -
+ reflects C++ classes and functions into Python, from Dave
+ Abrahams.</li>
+ <li><a href="libs/static_assert/static_assert.htm">Static Assert Library</a>
+ added - compile time assertions from John Maddock</li>
+ <li><a href="libs/property_map/property_map.html">Property Map Concepts</a>
+ added - interfaces which map key objects to value objects from Jeremy Siek.</li>
+ <li><a href="libs/graph/doc/table_of_contents.html">Graph Library</a> minor
+ updates.</li>
+ <li> <a href="libs/regex/index.htm">Regular Expression Library</a>&nbsp; minor
+ updates.</li>
+ <li><a href="more/lib_guide.htm">Library Requirements and Guidelines</a> -
+ directory name policy added.</li>
+ <li><a href="more/faq.htm">FAQ</a> updated.</li>
+</ul>
+<hr>
+<p>Revised <!--webbot bot="Timestamp" s-type="EDITED" s-format="%d %B %Y" startspan -->14 March 2001<!--webbot bot="Timestamp" endspan i-checksum="27237" --></p>
+
+</body>
+
+</html>
diff --git a/libs/array b/libs/array
new file mode 160000
+Subproject 308eb9afa5f511fdabb3e3ae8af267b7592f867
diff --git a/libs/compose b/libs/compose
new file mode 160000
+Subproject a2a5b837f484f169e2a4451d9703d1587ba677e
diff --git a/libs/concept_check b/libs/concept_check
new file mode 160000
+Subproject 5b658c567a40c0091ce5ea5910061125e5b84e4
diff --git a/libs/config b/libs/config
new file mode 160000
+Subproject f0436e972e4d104bd0073d5dab8b4e809475897
diff --git a/libs/conversion b/libs/conversion
new file mode 160000
+Subproject 5e5f58d624c0135fc1c73a2f35fecc433e2e5ee
diff --git a/libs/detail b/libs/detail
new file mode 160000
+Subproject cbf0ce515302ff24e0779d8c1682c7ffb9705d8
diff --git a/libs/disjoint_sets b/libs/disjoint_sets
new file mode 160000
+Subproject 6659519f47c0794adab51f6e7ac8e46b6779bc5
diff --git a/libs/functional b/libs/functional
new file mode 160000
+Subproject 0fd0902f6b962f3d9c8ff41c927784742cbcf06
diff --git a/libs/graph b/libs/graph
new file mode 160000
+Subproject 8071d0c1ee840c17ec9dc2a9c100464f36abbb8
diff --git a/libs/hdr_depend.html b/libs/hdr_depend.html
new file mode 100644
index 0000000000..add7e490c2
--- /dev/null
+++ b/libs/hdr_depend.html
@@ -0,0 +1,841 @@
+<html>
+<head>
+<title>
+Boost Header Dependencies
+</title>
+</head><body bgcolor="#FFFFFF" text="#000000">
+<h1><img border="0" src="../c++boost.gif" width="277" height="86"></h1>
+<h1>Boost Header Dependencies</h1>
+<p>The program which generates this table simply scans for <i><b>#includes</b></i>
+in source code.&nbsp; Thus it picks up spurious <i>#includes</i> such as those
+in comments and string literals, and those excluded from compiles by
+preprocessor statements.&nbsp; If a header appears to include some
+unusual header, such as stdlib.h or windows.h, it is almost
+certainly only actually included as a platform specific workaround.</p>
+<p>Boost sub-directories with the word &quot;detail&quot; in their name contain
+implementation details.</p>
+<p>C++ Standard Library headers included by other Standard Library headers are
+not shown since such dependencies are an artifact of a particular Standard
+Library implementation and cannot be relied upon.</p>
+<p>Which headers are included by a given boost header is also an implementation
+detail and subject to change at any time. The Header Dependencies Table is
+useful only for determining which headers are currently included by a given
+boost header. Just as with the standard library, if your program uses components
+from any boost header, that header should specifically be included.</p>
+<p><b>Run Date:</b> 09 Mar 2001 14:08 GMT</p>
+<p>
+<table border="1" cellspacing="0" cellpadding="5">
+<tr>
+<td><b>Header</b></td>
+<td><b>Other headers included, directly or indirectly</b></td>
+</tr>
+<tr>
+<td valign="top"><a href="../boost/array.hpp">boost/array.hpp</a></td>
+<td>algorithm<br>
+<a href="../boost/config.hpp">boost/config.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;cstdlib<br>
+&nbsp;&nbsp;&nbsp;&nbsp;float.h<br>
+&nbsp;&nbsp;&nbsp;&nbsp;memory<br>
+cstddef<br>
+iterator<br>
+stdexcept&nbsp;</td>
+</tr>
+<tr>
+<td valign="top"><a href="../boost/array_traits.hpp">boost/array_traits.hpp</a></td>
+<td><a href="../boost/config.hpp">boost/config.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;cstdlib<br>
+&nbsp;&nbsp;&nbsp;&nbsp;float.h<br>
+&nbsp;&nbsp;&nbsp;&nbsp;iterator<br>
+&nbsp;&nbsp;&nbsp;&nbsp;memory<br>
+cstddef&nbsp;</td>
+</tr>
+<tr>
+<td valign="top"><a href="../boost/call_traits.hpp">boost/call_traits.hpp</a></td>
+<td><a href="../boost/config.hpp">boost/config.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;cstddef<br>
+&nbsp;&nbsp;&nbsp;&nbsp;cstdlib<br>
+&nbsp;&nbsp;&nbsp;&nbsp;float.h<br>
+&nbsp;&nbsp;&nbsp;&nbsp;iterator<br>
+&nbsp;&nbsp;&nbsp;&nbsp;memory<br>
+<a href="../boost/detail/call_traits.hpp">boost/detail/call_traits.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/type_traits/arithmetic_traits.hpp">boost/type_traits/arithmetic_traits.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/type_traits/fwd.hpp">boost/type_traits/fwd.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/type_traits/ice.hpp">boost/type_traits/ice.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;climits<br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/type_traits/composite_traits.hpp">boost/type_traits/composite_traits.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/type_traits/conversion_traits.hpp">boost/type_traits/conversion_traits.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/type_traits/cv_traits.hpp">boost/type_traits/cv_traits.hpp</a><br>
+<a href="../boost/detail/ob_call_traits.hpp">boost/detail/ob_call_traits.hpp</a>&nbsp;</td>
+</tr>
+<tr>
+<td valign="top"><a href="../boost/cast.hpp">boost/cast.hpp</a></td>
+<td><a href="../boost/config.hpp">boost/config.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;cstddef<br>
+&nbsp;&nbsp;&nbsp;&nbsp;cstdlib<br>
+&nbsp;&nbsp;&nbsp;&nbsp;float.h<br>
+&nbsp;&nbsp;&nbsp;&nbsp;iterator<br>
+&nbsp;&nbsp;&nbsp;&nbsp;memory<br>
+<a href="../boost/type.hpp">boost/type.hpp</a><br>
+cassert<br>
+limits<br>
+typeinfo&nbsp;</td>
+</tr>
+<tr>
+<td valign="top"><a href="../boost/compose.hpp">boost/compose.hpp</a></td>
+<td>functional&nbsp;</td>
+</tr>
+<tr>
+<td valign="top"><a href="../boost/compressed_pair.hpp">boost/compressed_pair.hpp</a></td>
+<td><a href="../boost/config.hpp">boost/config.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;cstddef<br>
+&nbsp;&nbsp;&nbsp;&nbsp;cstdlib<br>
+&nbsp;&nbsp;&nbsp;&nbsp;float.h<br>
+&nbsp;&nbsp;&nbsp;&nbsp;iterator<br>
+&nbsp;&nbsp;&nbsp;&nbsp;memory<br>
+<a href="../boost/detail/compressed_pair.hpp">boost/detail/compressed_pair.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;algorithm<br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/call_traits.hpp">boost/call_traits.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/detail/call_traits.hpp">boost/detail/call_traits.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/type_traits/arithmetic_traits.hpp">boost/type_traits/arithmetic_traits.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/type_traits/fwd.hpp">boost/type_traits/fwd.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/type_traits/ice.hpp">boost/type_traits/ice.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;climits<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/type_traits/composite_traits.hpp">boost/type_traits/composite_traits.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/type_traits/conversion_traits.hpp">boost/type_traits/conversion_traits.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/type_traits/cv_traits.hpp">boost/type_traits/cv_traits.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/detail/ob_call_traits.hpp">boost/detail/ob_call_traits.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/type_traits/object_traits.hpp">boost/type_traits/object_traits.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/type_traits/same_traits.hpp">boost/type_traits/same_traits.hpp</a><br>
+<a href="../boost/detail/ob_compressed_pair.hpp">boost/detail/ob_compressed_pair.hpp</a>&nbsp;</td>
+</tr>
+<tr>
+<td valign="top"><a href="../boost/concept_archetype.hpp">boost/concept_archetype.hpp</a></td>
+<td><a href="../boost/config.hpp">boost/config.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;cstddef<br>
+&nbsp;&nbsp;&nbsp;&nbsp;cstdlib<br>
+&nbsp;&nbsp;&nbsp;&nbsp;float.h<br>
+&nbsp;&nbsp;&nbsp;&nbsp;iterator<br>
+&nbsp;&nbsp;&nbsp;&nbsp;memory<br>
+<a href="../boost/iterator.hpp">boost/iterator.hpp</a><br>
+functional&nbsp;</td>
+</tr>
+<tr>
+<td valign="top"><a href="../boost/concept_check.hpp">boost/concept_check.hpp</a></td>
+<td><a href="../boost/config.hpp">boost/config.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;cstddef<br>
+&nbsp;&nbsp;&nbsp;&nbsp;cstdlib<br>
+&nbsp;&nbsp;&nbsp;&nbsp;float.h<br>
+&nbsp;&nbsp;&nbsp;&nbsp;iterator<br>
+&nbsp;&nbsp;&nbsp;&nbsp;memory<br>
+<a href="../boost/iterator.hpp">boost/iterator.hpp</a><br>
+<a href="../boost/pending/limits.hpp">boost/pending/limits.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;limits<br>
+&nbsp;&nbsp;&nbsp;&nbsp;limits.h<br>
+<a href="../boost/static_assert.hpp">boost/static_assert.hpp</a><br>
+utility&nbsp;</td>
+</tr>
+<tr>
+<td valign="top"><a href="../boost/config.hpp">boost/config.hpp</a></td>
+<td>cstddef<br>
+cstdlib<br>
+float.h<br>
+iterator<br>
+memory&nbsp;</td>
+</tr>
+<tr>
+<td valign="top"><a href="../boost/cregex.hpp">boost/cregex.hpp</a></td>
+<td><a href="../boost/re_detail/regex_config.hpp">boost/re_detail/regex_config.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;algo.h<br>
+&nbsp;&nbsp;&nbsp;&nbsp;algorithm<br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/re_detail/regex_library_include.hpp">boost/re_detail/regex_library_include.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/re_detail/regex_options.hpp">boost/re_detail/regex_options.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/smart_ptr.hpp">boost/smart_ptr.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/config.hpp">boost/config.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;float.h<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/utility.hpp">boost/utility.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;functional<br>
+&nbsp;&nbsp;&nbsp;&nbsp;cctype<br>
+&nbsp;&nbsp;&nbsp;&nbsp;clocale<br>
+&nbsp;&nbsp;&nbsp;&nbsp;cstddef<br>
+&nbsp;&nbsp;&nbsp;&nbsp;cstdio<br>
+&nbsp;&nbsp;&nbsp;&nbsp;cstdlib<br>
+&nbsp;&nbsp;&nbsp;&nbsp;cstring<br>
+&nbsp;&nbsp;&nbsp;&nbsp;cwchar<br>
+&nbsp;&nbsp;&nbsp;&nbsp;cwctype<br>
+&nbsp;&nbsp;&nbsp;&nbsp;exception<br>
+&nbsp;&nbsp;&nbsp;&nbsp;iostream<br>
+&nbsp;&nbsp;&nbsp;&nbsp;iostream.h<br>
+&nbsp;&nbsp;&nbsp;&nbsp;iterator<br>
+&nbsp;&nbsp;&nbsp;&nbsp;locale<br>
+&nbsp;&nbsp;&nbsp;&nbsp;memory<br>
+&nbsp;&nbsp;&nbsp;&nbsp;stdlib.h<br>
+&nbsp;&nbsp;&nbsp;&nbsp;utility<br>
+&nbsp;&nbsp;&nbsp;&nbsp;wctype.h<br>
+&nbsp;&nbsp;&nbsp;&nbsp;windows.h<br>
+string<br>
+vector&nbsp;</td>
+</tr>
+<tr>
+<td valign="top"><a href="../boost/cstdint.hpp">boost/cstdint.hpp</a></td>
+<td><a href="../boost/config.hpp">boost/config.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;cstddef<br>
+&nbsp;&nbsp;&nbsp;&nbsp;cstdlib<br>
+&nbsp;&nbsp;&nbsp;&nbsp;float.h<br>
+&nbsp;&nbsp;&nbsp;&nbsp;iterator<br>
+&nbsp;&nbsp;&nbsp;&nbsp;memory<br>
+limits.h<br>
+stdint.h&nbsp;</td>
+</tr>
+<tr>
+<td valign="top"><a href="../boost/functional.hpp">boost/functional.hpp</a></td>
+<td><a href="../boost/call_traits.hpp">boost/call_traits.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/detail/call_traits.hpp">boost/detail/call_traits.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/type_traits/arithmetic_traits.hpp">boost/type_traits/arithmetic_traits.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/type_traits/fwd.hpp">boost/type_traits/fwd.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cstddef<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cstdlib<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/type_traits/ice.hpp">boost/type_traits/ice.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;climits<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/type_traits/composite_traits.hpp">boost/type_traits/composite_traits.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/type_traits/conversion_traits.hpp">boost/type_traits/conversion_traits.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/type_traits/cv_traits.hpp">boost/type_traits/cv_traits.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/detail/ob_call_traits.hpp">boost/detail/ob_call_traits.hpp</a><br>
+<a href="../boost/config.hpp">boost/config.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;float.h<br>
+&nbsp;&nbsp;&nbsp;&nbsp;iterator<br>
+&nbsp;&nbsp;&nbsp;&nbsp;memory<br>
+functional&nbsp;</td>
+</tr>
+<tr>
+<td valign="top"><a href="../boost/graph/adjacency_list.hpp">boost/graph/adjacency_list.hpp</a></td>
+<td><a href="../boost/config.hpp">boost/config.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;cstddef<br>
+&nbsp;&nbsp;&nbsp;&nbsp;cstdlib<br>
+&nbsp;&nbsp;&nbsp;&nbsp;float.h<br>
+&nbsp;&nbsp;&nbsp;&nbsp;iterator<br>
+&nbsp;&nbsp;&nbsp;&nbsp;memory<br>
+<a href="../boost/graph/detail/adjacency_list.hpp">boost/graph/detail/adjacency_list.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;algorithm<br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/graph/adjacency_iterator.hpp">boost/graph/adjacency_iterator.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/graph/detail/adj_list_edge_iterator.hpp">boost/graph/detail/adj_list_edge_iterator.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/graph/graph_concepts.hpp">boost/graph/graph_concepts.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/concept_check.hpp">boost/concept_check.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/iterator.hpp">boost/iterator.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/pending/limits.hpp">boost/pending/limits.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;limits<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;limits.h<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/static_assert.hpp">boost/static_assert.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;utility<br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/graph/graph_utility.hpp">boost/graph/graph_utility.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;assert.h<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/graph/depth_first_search.hpp">boost/graph/depth_first_search.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/graph/visitors.hpp">boost/graph/visitors.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/graph/detail/is_same.hpp">boost/graph/detail/is_same.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stack<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/pending/container_traits.hpp">boost/pending/container_traits.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/utility.hpp">boost/utility.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;iosfwd<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stdlib.h<br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/graph/properties.hpp">boost/graph/properties.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/iterator_adaptors.hpp">boost/iterator_adaptors.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/compressed_pair.hpp">boost/compressed_pair.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/detail/compressed_pair.hpp">boost/detail/compressed_pair.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/call_traits.hpp">boost/call_traits.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/detail/call_traits.hpp">boost/detail/call_traits.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/type_traits/arithmetic_traits.hpp">boost/type_traits/arithmetic_traits.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/type_traits/fwd.hpp">boost/type_traits/fwd.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/type_traits/ice.hpp">boost/type_traits/ice.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;climits<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/type_traits/composite_traits.hpp">boost/type_traits/composite_traits.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/type_traits/conversion_traits.hpp">boost/type_traits/conversion_traits.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/type_traits/cv_traits.hpp">boost/type_traits/cv_traits.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/detail/ob_call_traits.hpp">boost/detail/ob_call_traits.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/type_traits/object_traits.hpp">boost/type_traits/object_traits.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/type_traits/same_traits.hpp">boost/type_traits/same_traits.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/detail/ob_compressed_pair.hpp">boost/detail/ob_compressed_pair.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/detail/iterator.hpp">boost/detail/iterator.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;deque<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xtree<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/detail/named_template_params.hpp">boost/detail/named_template_params.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/detail/select_type.hpp">boost/detail/select_type.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/type.hpp">boost/type.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/type_traits.hpp">boost/type_traits.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/type_traits/alignment_traits.hpp">boost/type_traits/alignment_traits.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/type_traits/transform_traits.hpp">boost/type_traits/transform_traits.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/type_traits/transform_traits_spec.hpp">boost/type_traits/transform_traits_spec.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/operators.hpp">boost/operators.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/pending/integer_range.hpp">boost/pending/integer_range.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/counting_iterator.hpp">boost/counting_iterator.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/detail/numeric_traits.hpp">boost/detail/numeric_traits.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/cstdint.hpp">boost/cstdint.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stdint.h<br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/pending/property.hpp">boost/pending/property.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/pending/detail/property.hpp">boost/pending/detail/property.hpp</a><br>
+<a href="../boost/graph/detail/edge.hpp">boost/graph/detail/edge.hpp</a><br>
+<a href="../boost/graph/graph_selectors.hpp">boost/graph/graph_selectors.hpp</a><br>
+<a href="../boost/graph/graph_traits.hpp">boost/graph/graph_traits.hpp</a><br>
+<a href="../boost/pending/ct_if.hpp">boost/pending/ct_if.hpp</a><br>
+<a href="../boost/property_map.hpp">boost/property_map.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/concept_archetype.hpp">boost/concept_archetype.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;functional<br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/pending/cstddef.hpp">boost/pending/cstddef.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stddef.h<br>
+hash_map<br>
+hash_set<br>
+list<br>
+map<br>
+set<br>
+slist<br>
+vector&nbsp;</td>
+</tr>
+<tr>
+<td valign="top"><a href="../boost/graph/edge_list.hpp">boost/graph/edge_list.hpp</a></td>
+<td><a href="../boost/config.hpp">boost/config.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;cstddef<br>
+&nbsp;&nbsp;&nbsp;&nbsp;cstdlib<br>
+&nbsp;&nbsp;&nbsp;&nbsp;float.h<br>
+&nbsp;&nbsp;&nbsp;&nbsp;memory<br>
+<a href="../boost/graph/graph_traits.hpp">boost/graph/graph_traits.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/utility.hpp">boost/utility.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;utility<br>
+<a href="../boost/graph/properties.hpp">boost/graph/properties.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/pending/property.hpp">boost/pending/property.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/pending/detail/property.hpp">boost/pending/detail/property.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/property_map.hpp">boost/property_map.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/concept_archetype.hpp">boost/concept_archetype.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/iterator.hpp">boost/iterator.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;functional<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/concept_check.hpp">boost/concept_check.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/pending/limits.hpp">boost/pending/limits.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;limits<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;limits.h<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/static_assert.hpp">boost/static_assert.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/pending/cstddef.hpp">boost/pending/cstddef.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stddef.h<br>
+<a href="../boost/pending/ct_if.hpp">boost/pending/ct_if.hpp</a><br>
+<a href="../boost/pending/integer_range.hpp">boost/pending/integer_range.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/counting_iterator.hpp">boost/counting_iterator.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/detail/iterator.hpp">boost/detail/iterator.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;deque<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;iosfwd<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;list<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xtree<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/detail/numeric_traits.hpp">boost/detail/numeric_traits.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/cstdint.hpp">boost/cstdint.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stdint.h<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/detail/select_type.hpp">boost/detail/select_type.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/iterator_adaptors.hpp">boost/iterator_adaptors.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/compressed_pair.hpp">boost/compressed_pair.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/detail/compressed_pair.hpp">boost/detail/compressed_pair.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;algorithm<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/call_traits.hpp">boost/call_traits.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/detail/call_traits.hpp">boost/detail/call_traits.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/type_traits/arithmetic_traits.hpp">boost/type_traits/arithmetic_traits.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/type_traits/fwd.hpp">boost/type_traits/fwd.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/type_traits/ice.hpp">boost/type_traits/ice.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;climits<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/type_traits/composite_traits.hpp">boost/type_traits/composite_traits.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/type_traits/conversion_traits.hpp">boost/type_traits/conversion_traits.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/type_traits/cv_traits.hpp">boost/type_traits/cv_traits.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/detail/ob_call_traits.hpp">boost/detail/ob_call_traits.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/type_traits/object_traits.hpp">boost/type_traits/object_traits.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/type_traits/same_traits.hpp">boost/type_traits/same_traits.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/detail/ob_compressed_pair.hpp">boost/detail/ob_compressed_pair.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/detail/named_template_params.hpp">boost/detail/named_template_params.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/type.hpp">boost/type.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/type_traits.hpp">boost/type_traits.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/type_traits/alignment_traits.hpp">boost/type_traits/alignment_traits.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/type_traits/transform_traits.hpp">boost/type_traits/transform_traits.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/type_traits/transform_traits_spec.hpp">boost/type_traits/transform_traits_spec.hpp</a><br>
+iterator&nbsp;</td>
+</tr>
+<tr>
+<td valign="top"><a href="../boost/graph/graph_concepts.hpp">boost/graph/graph_concepts.hpp</a></td>
+<td><a href="../boost/concept_check.hpp">boost/concept_check.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/iterator.hpp">boost/iterator.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cstddef<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;iterator<br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/pending/limits.hpp">boost/pending/limits.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;float.h<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;limits<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;limits.h<br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/static_assert.hpp">boost/static_assert.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;utility<br>
+<a href="../boost/config.hpp">boost/config.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;cstdlib<br>
+&nbsp;&nbsp;&nbsp;&nbsp;memory<br>
+<a href="../boost/graph/graph_traits.hpp">boost/graph/graph_traits.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/pending/ct_if.hpp">boost/pending/ct_if.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/utility.hpp">boost/utility.hpp</a><br>
+<a href="../boost/graph/properties.hpp">boost/graph/properties.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/pending/property.hpp">boost/pending/property.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/pending/detail/property.hpp">boost/pending/detail/property.hpp</a><br>
+<a href="../boost/property_map.hpp">boost/property_map.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/concept_archetype.hpp">boost/concept_archetype.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;functional<br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/pending/cstddef.hpp">boost/pending/cstddef.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stddef.h&nbsp;</td>
+</tr>
+<tr>
+<td valign="top"><a href="../boost/graph/graph_traits.hpp">boost/graph/graph_traits.hpp</a></td>
+<td><a href="../boost/pending/ct_if.hpp">boost/pending/ct_if.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/config.hpp">boost/config.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cstddef<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cstdlib<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;float.h<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;memory<br>
+<a href="../boost/utility.hpp">boost/utility.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;utility<br>
+iterator&nbsp;</td>
+</tr>
+<tr>
+<td valign="top"><a href="../boost/graph/properties.hpp">boost/graph/properties.hpp</a></td>
+<td><a href="../boost/config.hpp">boost/config.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;cstddef<br>
+&nbsp;&nbsp;&nbsp;&nbsp;cstdlib<br>
+&nbsp;&nbsp;&nbsp;&nbsp;float.h<br>
+&nbsp;&nbsp;&nbsp;&nbsp;iterator<br>
+&nbsp;&nbsp;&nbsp;&nbsp;memory<br>
+<a href="../boost/pending/property.hpp">boost/pending/property.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/pending/ct_if.hpp">boost/pending/ct_if.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/pending/detail/property.hpp">boost/pending/detail/property.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;utility<br>
+<a href="../boost/property_map.hpp">boost/property_map.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/concept_archetype.hpp">boost/concept_archetype.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/iterator.hpp">boost/iterator.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;functional<br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/concept_check.hpp">boost/concept_check.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/pending/limits.hpp">boost/pending/limits.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;limits<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;limits.h<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/static_assert.hpp">boost/static_assert.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/pending/cstddef.hpp">boost/pending/cstddef.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stddef.h&nbsp;</td>
+</tr>
+<tr>
+<td valign="top"><a href="../boost/graph/visitors.hpp">boost/graph/visitors.hpp</a></td>
+<td><a href="../boost/config.hpp">boost/config.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;cstddef<br>
+&nbsp;&nbsp;&nbsp;&nbsp;cstdlib<br>
+&nbsp;&nbsp;&nbsp;&nbsp;float.h<br>
+&nbsp;&nbsp;&nbsp;&nbsp;iterator<br>
+&nbsp;&nbsp;&nbsp;&nbsp;memory<br>
+<a href="../boost/graph/detail/is_same.hpp">boost/graph/detail/is_same.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/pending/ct_if.hpp">boost/pending/ct_if.hpp</a><br>
+<a href="../boost/graph/graph_traits.hpp">boost/graph/graph_traits.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/utility.hpp">boost/utility.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;utility<br>
+<a href="../boost/pending/limits.hpp">boost/pending/limits.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;limits<br>
+&nbsp;&nbsp;&nbsp;&nbsp;limits.h<br>
+<a href="../boost/property_map.hpp">boost/property_map.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/concept_archetype.hpp">boost/concept_archetype.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/iterator.hpp">boost/iterator.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;functional<br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/concept_check.hpp">boost/concept_check.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/static_assert.hpp">boost/static_assert.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/pending/cstddef.hpp">boost/pending/cstddef.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stddef.h<br>
+iosfwd&nbsp;</td>
+</tr>
+<tr>
+<td valign="top"><a href="../boost/integer.hpp">boost/integer.hpp</a></td>
+<td>limits&nbsp;</td>
+</tr>
+<tr>
+<td valign="top"><a href="../boost/integer_traits.hpp">boost/integer_traits.hpp</a></td>
+<td><a href="../boost/config.hpp">boost/config.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;cstddef<br>
+&nbsp;&nbsp;&nbsp;&nbsp;cstdlib<br>
+&nbsp;&nbsp;&nbsp;&nbsp;float.h<br>
+&nbsp;&nbsp;&nbsp;&nbsp;iterator<br>
+&nbsp;&nbsp;&nbsp;&nbsp;memory<br>
+limits<br>
+limits.h&nbsp;</td>
+</tr>
+<tr>
+<td valign="top"><a href="../boost/iterator.hpp">boost/iterator.hpp</a></td>
+<td><a href="../boost/config.hpp">boost/config.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;cstdlib<br>
+&nbsp;&nbsp;&nbsp;&nbsp;float.h<br>
+&nbsp;&nbsp;&nbsp;&nbsp;memory<br>
+cstddef<br>
+iterator&nbsp;</td>
+</tr>
+<tr>
+<td valign="top"><a href="../boost/iterator_adaptors.hpp">boost/iterator_adaptors.hpp</a></td>
+<td><a href="../boost/compressed_pair.hpp">boost/compressed_pair.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/config.hpp">boost/config.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cstddef<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cstdlib<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;float.h<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;iterator<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;memory<br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/detail/compressed_pair.hpp">boost/detail/compressed_pair.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;algorithm<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/call_traits.hpp">boost/call_traits.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/detail/call_traits.hpp">boost/detail/call_traits.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/type_traits/arithmetic_traits.hpp">boost/type_traits/arithmetic_traits.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/type_traits/fwd.hpp">boost/type_traits/fwd.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/type_traits/ice.hpp">boost/type_traits/ice.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;climits<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/type_traits/composite_traits.hpp">boost/type_traits/composite_traits.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/type_traits/conversion_traits.hpp">boost/type_traits/conversion_traits.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/type_traits/cv_traits.hpp">boost/type_traits/cv_traits.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/detail/ob_call_traits.hpp">boost/detail/ob_call_traits.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/type_traits/object_traits.hpp">boost/type_traits/object_traits.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/type_traits/same_traits.hpp">boost/type_traits/same_traits.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/detail/ob_compressed_pair.hpp">boost/detail/ob_compressed_pair.hpp</a><br>
+<a href="../boost/concept_check.hpp">boost/concept_check.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/pending/limits.hpp">boost/pending/limits.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;limits<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;limits.h<br>
+&nbsp;&nbsp;&nbsp;&nbsp;utility<br>
+<a href="../boost/detail/iterator.hpp">boost/detail/iterator.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;deque<br>
+&nbsp;&nbsp;&nbsp;&nbsp;iosfwd<br>
+&nbsp;&nbsp;&nbsp;&nbsp;list<br>
+&nbsp;&nbsp;&nbsp;&nbsp;xtree<br>
+<a href="../boost/detail/named_template_params.hpp">boost/detail/named_template_params.hpp</a><br>
+<a href="../boost/detail/select_type.hpp">boost/detail/select_type.hpp</a><br>
+<a href="../boost/iterator.hpp">boost/iterator.hpp</a><br>
+<a href="../boost/static_assert.hpp">boost/static_assert.hpp</a><br>
+<a href="../boost/type.hpp">boost/type.hpp</a><br>
+<a href="../boost/type_traits.hpp">boost/type_traits.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/type_traits/alignment_traits.hpp">boost/type_traits/alignment_traits.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/type_traits/transform_traits.hpp">boost/type_traits/transform_traits.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/type_traits/transform_traits_spec.hpp">boost/type_traits/transform_traits_spec.hpp</a><br>
+<a href="../boost/utility.hpp">boost/utility.hpp</a>&nbsp;</td>
+</tr>
+<tr>
+<td valign="top"><a href="../boost/nondet_random.hpp">boost/nondet_random.hpp</a></td>
+<td>algorithm<br>
+<a href="../boost/config.hpp">boost/config.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;cstddef<br>
+&nbsp;&nbsp;&nbsp;&nbsp;cstdlib<br>
+&nbsp;&nbsp;&nbsp;&nbsp;float.h<br>
+&nbsp;&nbsp;&nbsp;&nbsp;iterator<br>
+&nbsp;&nbsp;&nbsp;&nbsp;memory<br>
+<a href="../boost/integer_traits.hpp">boost/integer_traits.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;limits<br>
+&nbsp;&nbsp;&nbsp;&nbsp;limits.h<br>
+<a href="../boost/utility.hpp">boost/utility.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;utility<br>
+cmath<br>
+string&nbsp;</td>
+</tr>
+<tr>
+<td valign="top"><a href="../boost/operators.hpp">boost/operators.hpp</a></td>
+<td><a href="../boost/config.hpp">boost/config.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;cstddef<br>
+&nbsp;&nbsp;&nbsp;&nbsp;cstdlib<br>
+&nbsp;&nbsp;&nbsp;&nbsp;float.h<br>
+&nbsp;&nbsp;&nbsp;&nbsp;iterator<br>
+&nbsp;&nbsp;&nbsp;&nbsp;memory<br>
+<a href="../boost/iterator.hpp">boost/iterator.hpp</a>&nbsp;</td>
+</tr>
+<tr>
+<td valign="top"><a href="../boost/pattern_except.hpp">boost/pattern_except.hpp</a></td>
+<td>stdexcept&nbsp;</td>
+</tr>
+<tr>
+<td valign="top"><a href="../boost/pool/pool.hpp">boost/pool/pool.hpp</a></td>
+<td><a href="../boost/config.hpp">boost/config.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;float.h<br>
+&nbsp;&nbsp;&nbsp;&nbsp;iterator<br>
+&nbsp;&nbsp;&nbsp;&nbsp;memory<br>
+<a href="../boost/pool/detail/ct_gcd_lcm.hpp">boost/pool/detail/ct_gcd_lcm.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/pool/detail/postulate.hpp">boost/pool/detail/postulate.hpp</a><br>
+<a href="../boost/pool/detail/gcd_lcm.hpp">boost/pool/detail/gcd_lcm.hpp</a><br>
+<a href="../boost/pool/pool_fwd.hpp">boost/pool/pool_fwd.hpp</a><br>
+<a href="../boost/pool/simple_segregated_storage.hpp">boost/pool/simple_segregated_storage.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/pool/simple_segregated_storage_fwd.hpp">boost/pool/simple_segregated_storage_fwd.hpp</a><br>
+cstddef<br>
+cstdlib<br>
+exception<br>
+functional<br>
+new&nbsp;</td>
+</tr>
+<tr>
+<td valign="top"><a href="../boost/progress.hpp">boost/progress.hpp</a></td>
+<td><a href="../boost/cstdint.hpp">boost/cstdint.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/config.hpp">boost/config.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cstddef<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cstdlib<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;float.h<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;iterator<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;memory<br>
+&nbsp;&nbsp;&nbsp;&nbsp;limits.h<br>
+&nbsp;&nbsp;&nbsp;&nbsp;stdint.h<br>
+<a href="../boost/timer.hpp">boost/timer.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;ctime<br>
+&nbsp;&nbsp;&nbsp;&nbsp;limits<br>
+<a href="../boost/utility.hpp">boost/utility.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;utility<br>
+iostream&nbsp;</td>
+</tr>
+<tr>
+<td valign="top"><a href="../boost/property_map.hpp">boost/property_map.hpp</a></td>
+<td><a href="../boost/concept_archetype.hpp">boost/concept_archetype.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/iterator.hpp">boost/iterator.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cstddef<br>
+&nbsp;&nbsp;&nbsp;&nbsp;functional<br>
+<a href="../boost/concept_check.hpp">boost/concept_check.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/pending/limits.hpp">boost/pending/limits.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;float.h<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;limits<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;limits.h<br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/static_assert.hpp">boost/static_assert.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;utility<br>
+<a href="../boost/config.hpp">boost/config.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;cstdlib<br>
+&nbsp;&nbsp;&nbsp;&nbsp;memory<br>
+<a href="../boost/pending/cstddef.hpp">boost/pending/cstddef.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;stddef.h<br>
+iterator&nbsp;</td>
+</tr>
+<tr>
+<td valign="top"><a href="../boost/random.hpp">boost/random.hpp</a></td>
+<td>algorithm<br>
+<a href="../boost/cstdint.hpp">boost/cstdint.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/config.hpp">boost/config.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cstdlib<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;float.h<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;memory<br>
+&nbsp;&nbsp;&nbsp;&nbsp;limits.h<br>
+&nbsp;&nbsp;&nbsp;&nbsp;stdint.h<br>
+<a href="../boost/integer_traits.hpp">boost/integer_traits.hpp</a><br>
+<a href="../boost/operators.hpp">boost/operators.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/iterator.hpp">boost/iterator.hpp</a><br>
+<a href="../boost/utility.hpp">boost/utility.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;utility<br>
+cassert<br>
+cmath<br>
+cstddef<br>
+functional<br>
+iostream<br>
+iterator<br>
+limits<br>
+vector&nbsp;</td>
+</tr>
+<tr>
+<td valign="top"><a href="../boost/rational.hpp">boost/rational.hpp</a></td>
+<td>algorithm<br>
+<a href="../boost/call_traits.hpp">boost/call_traits.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/detail/call_traits.hpp">boost/detail/call_traits.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/type_traits/arithmetic_traits.hpp">boost/type_traits/arithmetic_traits.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/type_traits/fwd.hpp">boost/type_traits/fwd.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cstddef<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/type_traits/ice.hpp">boost/type_traits/ice.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;climits<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/type_traits/composite_traits.hpp">boost/type_traits/composite_traits.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/type_traits/conversion_traits.hpp">boost/type_traits/conversion_traits.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/type_traits/cv_traits.hpp">boost/type_traits/cv_traits.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/detail/ob_call_traits.hpp">boost/detail/ob_call_traits.hpp</a><br>
+<a href="../boost/config.hpp">boost/config.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;float.h<br>
+&nbsp;&nbsp;&nbsp;&nbsp;iterator<br>
+&nbsp;&nbsp;&nbsp;&nbsp;memory<br>
+<a href="../boost/operators.hpp">boost/operators.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/iterator.hpp">boost/iterator.hpp</a><br>
+cstdlib<br>
+iomanip<br>
+iostream<br>
+stdexcept<br>
+string&nbsp;</td>
+</tr>
+<tr>
+<td valign="top"><a href="../boost/regex.hpp">boost/regex.hpp</a></td>
+<td><a href="../boost/cregex.hpp">boost/cregex.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;string<br>
+&nbsp;&nbsp;&nbsp;&nbsp;vector<br>
+<a href="../boost/pattern_except.hpp">boost/pattern_except.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;stdexcept<br>
+<a href="../boost/re_detail/regex_compile.hpp">boost/re_detail/regex_compile.hpp</a><br>
+<a href="../boost/re_detail/regex_config.hpp">boost/re_detail/regex_config.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;algo.h<br>
+&nbsp;&nbsp;&nbsp;&nbsp;algorithm<br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/re_detail/regex_library_include.hpp">boost/re_detail/regex_library_include.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/re_detail/regex_options.hpp">boost/re_detail/regex_options.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/smart_ptr.hpp">boost/smart_ptr.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/config.hpp">boost/config.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;float.h<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/utility.hpp">boost/utility.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;functional<br>
+&nbsp;&nbsp;&nbsp;&nbsp;cctype<br>
+&nbsp;&nbsp;&nbsp;&nbsp;clocale<br>
+&nbsp;&nbsp;&nbsp;&nbsp;cstddef<br>
+&nbsp;&nbsp;&nbsp;&nbsp;cstdio<br>
+&nbsp;&nbsp;&nbsp;&nbsp;cstdlib<br>
+&nbsp;&nbsp;&nbsp;&nbsp;cwchar<br>
+&nbsp;&nbsp;&nbsp;&nbsp;cwctype<br>
+&nbsp;&nbsp;&nbsp;&nbsp;exception<br>
+&nbsp;&nbsp;&nbsp;&nbsp;iostream<br>
+&nbsp;&nbsp;&nbsp;&nbsp;iostream.h<br>
+&nbsp;&nbsp;&nbsp;&nbsp;iterator<br>
+&nbsp;&nbsp;&nbsp;&nbsp;locale<br>
+&nbsp;&nbsp;&nbsp;&nbsp;memory<br>
+&nbsp;&nbsp;&nbsp;&nbsp;stdlib.h<br>
+&nbsp;&nbsp;&nbsp;&nbsp;utility<br>
+&nbsp;&nbsp;&nbsp;&nbsp;wctype.h<br>
+&nbsp;&nbsp;&nbsp;&nbsp;windows.h<br>
+<a href="../boost/re_detail/regex_format.hpp">boost/re_detail/regex_format.hpp</a><br>
+<a href="../boost/re_detail/regex_kmp.hpp">boost/re_detail/regex_kmp.hpp</a><br>
+<a href="../boost/re_detail/regex_match.hpp">boost/re_detail/regex_match.hpp</a><br>
+<a href="../boost/re_detail/regex_raw_buffer.hpp">boost/re_detail/regex_raw_buffer.hpp</a><br>
+<a href="../boost/re_detail/regex_split.hpp">boost/re_detail/regex_split.hpp</a><br>
+<a href="../boost/re_detail/regex_stack.hpp">boost/re_detail/regex_stack.hpp</a><br>
+<a href="../boost/regex_traits.hpp">boost/regex_traits.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/re_detail/regex_cstring.hpp">boost/re_detail/regex_cstring.hpp</a><br>
+<a href="../boost/type_traits/transform_traits.hpp">boost/type_traits/transform_traits.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/type_traits/composite_traits.hpp">boost/type_traits/composite_traits.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/type_traits/arithmetic_traits.hpp">boost/type_traits/arithmetic_traits.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;climits<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/type_traits/conversion_traits.hpp">boost/type_traits/conversion_traits.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/type_traits/cv_traits.hpp">boost/type_traits/cv_traits.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/type_traits/fwd.hpp">boost/type_traits/fwd.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/type_traits/ice.hpp">boost/type_traits/ice.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/type_traits/transform_traits_spec.hpp">boost/type_traits/transform_traits_spec.hpp</a><br>
+cstring<br>
+iosfwd<br>
+new<br>
+typeinfo&nbsp;</td>
+</tr>
+<tr>
+<td valign="top"><a href="../boost/regex_traits.hpp">boost/regex_traits.hpp</a></td>
+<td><a href="../boost/cregex.hpp">boost/cregex.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/re_detail/regex_config.hpp">boost/re_detail/regex_config.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;algo.h<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;algorithm<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/re_detail/regex_library_include.hpp">boost/re_detail/regex_library_include.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/re_detail/regex_options.hpp">boost/re_detail/regex_options.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/smart_ptr.hpp">boost/smart_ptr.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/config.hpp">boost/config.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;float.h<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/utility.hpp">boost/utility.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;functional<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cctype<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;clocale<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cstddef<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cstdio<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cstdlib<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cstring<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cwchar<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cwctype<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;exception<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;iostream<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;iostream.h<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;iterator<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;memory<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stdlib.h<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;utility<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wctype.h<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;windows.h<br>
+&nbsp;&nbsp;&nbsp;&nbsp;string<br>
+&nbsp;&nbsp;&nbsp;&nbsp;vector<br>
+<a href="../boost/re_detail/regex_cstring.hpp">boost/re_detail/regex_cstring.hpp</a><br>
+locale&nbsp;</td>
+</tr>
+<tr>
+<td valign="top"><a href="../boost/smart_ptr.hpp">boost/smart_ptr.hpp</a></td>
+<td>algorithm<br>
+<a href="../boost/config.hpp">boost/config.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;cstdlib<br>
+&nbsp;&nbsp;&nbsp;&nbsp;float.h<br>
+&nbsp;&nbsp;&nbsp;&nbsp;iterator<br>
+<a href="../boost/utility.hpp">boost/utility.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;utility<br>
+cstddef<br>
+functional<br>
+memory&nbsp;</td>
+</tr>
+<tr>
+<td valign="top"><a href="../boost/static_assert.hpp">boost/static_assert.hpp</a></td>
+<td><a href="../boost/config.hpp">boost/config.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;cstddef<br>
+&nbsp;&nbsp;&nbsp;&nbsp;cstdlib<br>
+&nbsp;&nbsp;&nbsp;&nbsp;float.h<br>
+&nbsp;&nbsp;&nbsp;&nbsp;iterator<br>
+&nbsp;&nbsp;&nbsp;&nbsp;memory&nbsp;</td>
+</tr>
+<tr>
+<td valign="top"><a href="../boost/test/cpp_main.cpp">boost/test/cpp_main.cpp</a></td>
+<td><a href="../boost/detail/catch_exceptions.hpp">boost/detail/catch_exceptions.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/cstdlib.hpp">boost/cstdlib.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cstdlib<br>
+&nbsp;&nbsp;&nbsp;&nbsp;exception<br>
+&nbsp;&nbsp;&nbsp;&nbsp;new<br>
+&nbsp;&nbsp;&nbsp;&nbsp;ostream<br>
+&nbsp;&nbsp;&nbsp;&nbsp;stdexcept<br>
+&nbsp;&nbsp;&nbsp;&nbsp;string<br>
+&nbsp;&nbsp;&nbsp;&nbsp;typeinfo<br>
+iostream&nbsp;</td>
+</tr>
+<tr>
+<td valign="top"><a href="../boost/test/test_main.cpp">boost/test/test_main.cpp</a></td>
+<td><a href="../boost/cstdlib.hpp">boost/cstdlib.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;cstdlib<br>
+iostream<br>
+stdexcept&nbsp;</td>
+</tr>
+<tr>
+<td valign="top"><a href="../boost/test/test_tools.hpp">boost/test/test_tools.hpp</a></td>
+<td><a href="../boost/test/cpp_main.cpp">boost/test/cpp_main.cpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/detail/catch_exceptions.hpp">boost/detail/catch_exceptions.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/cstdlib.hpp">boost/cstdlib.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cstdlib<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;exception<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;new<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ostream<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stdexcept<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;string<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;typeinfo<br>
+&nbsp;&nbsp;&nbsp;&nbsp;iostream<br>
+<a href="../boost/test/test_main.cpp">boost/test/test_main.cpp</a><br>
+<a href="../boost/test_main.cpp">boost/test_main.cpp</a>&nbsp;</td>
+</tr>
+<tr>
+<td valign="top"><a href="../boost/timer.hpp">boost/timer.hpp</a></td>
+<td><a href="../boost/config.hpp">boost/config.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;cstddef<br>
+&nbsp;&nbsp;&nbsp;&nbsp;cstdlib<br>
+&nbsp;&nbsp;&nbsp;&nbsp;float.h<br>
+&nbsp;&nbsp;&nbsp;&nbsp;iterator<br>
+&nbsp;&nbsp;&nbsp;&nbsp;memory<br>
+ctime<br>
+limits&nbsp;</td>
+</tr>
+<tr>
+<td valign="top"><a href="../boost/type_traits.hpp">boost/type_traits.hpp</a></td>
+<td><a href="../boost/type_traits/alignment_traits.hpp">boost/type_traits/alignment_traits.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;cstddef<br>
+&nbsp;&nbsp;&nbsp;&nbsp;cstdlib<br>
+<a href="../boost/type_traits/arithmetic_traits.hpp">boost/type_traits/arithmetic_traits.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;climits<br>
+<a href="../boost/type_traits/composite_traits.hpp">boost/type_traits/composite_traits.hpp</a><br>
+<a href="../boost/type_traits/conversion_traits.hpp">boost/type_traits/conversion_traits.hpp</a><br>
+<a href="../boost/type_traits/cv_traits.hpp">boost/type_traits/cv_traits.hpp</a><br>
+<a href="../boost/type_traits/fwd.hpp">boost/type_traits/fwd.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/config.hpp">boost/config.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;float.h<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;iterator<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;memory<br>
+<a href="../boost/type_traits/ice.hpp">boost/type_traits/ice.hpp</a><br>
+<a href="../boost/type_traits/object_traits.hpp">boost/type_traits/object_traits.hpp</a><br>
+<a href="../boost/type_traits/same_traits.hpp">boost/type_traits/same_traits.hpp</a><br>
+<a href="../boost/type_traits/transform_traits.hpp">boost/type_traits/transform_traits.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="../boost/type_traits/transform_traits_spec.hpp">boost/type_traits/transform_traits_spec.hpp</a>&nbsp;</td>
+</tr>
+<tr>
+<td valign="top"><a href="../boost/utility.hpp">boost/utility.hpp</a></td>
+<td><a href="../boost/config.hpp">boost/config.hpp</a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;cstdlib<br>
+&nbsp;&nbsp;&nbsp;&nbsp;float.h<br>
+&nbsp;&nbsp;&nbsp;&nbsp;iterator<br>
+&nbsp;&nbsp;&nbsp;&nbsp;memory<br>
+cstddef<br>
+utility&nbsp;</td>
+</tr>
+</table>
+</body>
+</html>
diff --git a/libs/integer b/libs/integer
new file mode 160000
+Subproject a3709d31596b893bf6e21b58c48d1dd97dfac53
diff --git a/libs/iterator b/libs/iterator
new file mode 160000
+Subproject c0bbb3ce9a6fd25cc6a19cc0951c21c9d4ba414
diff --git a/libs/libraries.htm b/libs/libraries.htm
new file mode 100644
index 0000000000..5dad8e7e98
--- /dev/null
+++ b/libs/libraries.htm
@@ -0,0 +1,134 @@
+<html>
+
+<head>
+<meta http-equiv="Content-Type"
+content="text/html; charset=iso-8859-1">
+<meta name="ProgId" content="FrontPage.Editor.Document">
+<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
+<title>Boost Libraries</title>
+<meta name="Microsoft Border" content="none, default">
+</head>
+
+<body bgcolor="#FFFFFF" text="#000000">
+
+<table border="1" cellpadding="2" bgcolor="#007F7F">
+ <tr>
+ <td bgcolor="#FFFFFF"><img src="../c++boost.gif"
+ alt="c++boost.gif (8819 bytes)" width="277" height="86"></td>
+ <td><a href="../index.htm"><font color="#FFFFFF" size="4"
+ face="Arial">Home</font></a></td>
+ <td><a href="libraries.htm"><font color="#FFFFFF"
+ size="4" face="Arial">Libraries</font></a></td>
+ <td><a href="../people/people.htm"><font color="#FFFFFF"
+ size="4" face="Arial">People</font></a></td>
+ <td><a href="../more/faq.htm"><font color="#FFFFFF"
+ size="4" face="Arial">FAQ</font></a></td>
+ <td><a href="../more/index.htm"><font color="#FFFFFF"
+ size="4" face="Arial">More</font></a></td>
+ </tr>
+</table>
+
+<h1>Boost Libraries</h1>
+
+<ul>
+ <li><a href="array/index.htm">array</a> - STL compliant
+ container wrapper for arrays of constant size from
+ Nicolai Josuttis.</li>
+ <li><a href="utility/call_traits.htm">call_traits</a> -
+ Defines types for passing parameters from John Maddock,
+ Howard Hinnant, et al.</li>
+ <li><a href="compose/index.htm">compose</a> - Functional
+ composition adapters for the STL from Nicolai Josuttis.</li>
+ <li><a href="utility/compressed_pair.htm">compressed_pair</a>
+ - Empty member optimization from John Maddock, Howard
+ Hinnant, et al.</li>
+ <li><a href="concept_check/concept_check.htm">concept check</a>
+ - Tools for generic programming from Jeremy Siek.</li>
+ <li><a href="config/index.htm">config</a> - Helps boost
+ library developers adapt to compiler idiosyncrasies; not
+ intended for library users.</li>
+ <li><a href="conversion/index.htm">conversion</a> - Numeric,
+ polymorphic, and lexical casts from Dave Abrahams and
+ Kevlin Henney.</li>
+ <li><a href="dir_it/index.htm">dir_it</a> - A set of file
+ system directory level iterators from Dietmar Kühl.</li>
+ <li><a href="functional/index.html">functional</a> - Enhanced
+ function object adaptors from Mark Rodgers.</li>
+ <li><a href="graph/doc/table_of_contents.html">graph</a> -
+ Generic graph components and algorithms from Jeremy Siek
+ and a University of Notre Dame team.</li>
+ <li><a href="integer/index.htm">integer</a> - Headers to ease
+ dealing with integral types.</li>
+ <li><a href="utility/iterator_adaptors.htm">iterator adaptors</a>
+ - Adapt a base type into a standard conforming iterator,
+ and more, from Dave Abrahams, Jeremy Siek, and John
+ Potter.</li>
+ <li><a href="utility/operators.htm">operators</a> - Templates
+ ease arithmetic classes and iterators from Dave Abrahams
+ and Jeremy Siek.</li>
+ <li><a href="pool/doc/index.html">pool</a> - Memory pool management from
+ Steve Cleary.</li>
+ <li><a href="property_map/property_map.html">property map</a>
+ - Concepts defining interfaces which map key objects to
+ value objects from Jeremy Siek.</li>
+ <li><a href="python/doc/index.html">python</a> - Reflects C++
+ classes and functions into <a
+ href="http://www.python.org">Python</a>, from Dave
+ Abrahams.</li>
+ <li><a href="random/index.html">random</a> - A complete
+ system for random number generation from Jens Maurer.</li>
+ <li><a href="rational/index.html">rational</a> - A rational
+ number class from Paul Moore.</li>
+ <li><a href="regex/index.htm">regex</a> - Regular expression
+ library from John Maddock.</li>
+ <li><a href="smart_ptr/index.htm">smart_ptr</a> - Four smart
+ pointer classes from Greg Colvin and Beman Dawes.</li>
+ <li><a href="static_assert/static_assert.htm">static_assert</a>
+ - Static assertions (compile time assertions) from John
+ Maddock.</li>
+ <li><a href="test/doc/index.htm">test</a> - Support for program testing and
+ execution from Beman Dawes.</li>
+ <li><a href="timer/index.htm">timer</a> - Event timer,
+ progress timer, and progress display classes from Beman
+ Dawes.</li>
+ <li><a href="type_traits/index.htm">type_traits</a> -
+ Templates for fundamental properties of types from John
+ Maddock, Steve Cleary, et al.</li>
+ <li><a href="utility/utility.htm">utility</a> - Class <b>noncopyable</b>
+ plus <b>next(),</b>&nbsp; <b>prior(),</b> and <b>tie()</b>
+ function templates from Dave Abrahams and others. </li>
+</ul>
+
+<p>See <a href="../status/compiler_status.html">Compiler Status</a>
+to find out what library works with which compiler.</p>
+
+<p>See <a href="hdr_depend.html">Header Dependencies</a> to find
+out what other headers each boost header includes.</p>
+
+<p>See <a href="../more/download.html">Download and Installation</a> to find out
+how to download and install the libraries.</p>
+
+<h2>Obsolete Libraries</h2>
+
+<ul>
+ <li><a href="min_rand/index.htm">min_rand</a> - a random
+ number generator class from Beman Dawes. Replaced by <a
+ href="random/index.html">random</a>.</li>
+</ul>
+
+<h2>Beta Libraries</h2>
+
+<ul>
+ <li><a href="array_traits/index.html">array_traits</a> -
+ tools to treat built-in arrays more like STL containers
+ from Dietmar Kühl. Also see <a href="array/index.htm">array</a>.</li>
+ <li><a href="pri_queue/index.html">heaps</a> - a heap of
+ priority queues from Dietmar Kühl.</li>
+</ul>
+
+<hr>
+
+<p>Revised <!--webbot bot="Timestamp" s-type="EDITED"
+s-format="%d %b %Y" startspan -->14 Mar 2001<!--webbot bot="Timestamp" endspan i-checksum="14885" --></p>
+</body>
+</html>
diff --git a/libs/pool b/libs/pool
new file mode 160000
+Subproject 02c34e2305063014303088e8e7cffa3b2628366
diff --git a/libs/property_map b/libs/property_map
new file mode 160000
+Subproject efe8c05aa547d3814378d46ad43be6512961af5
diff --git a/libs/python b/libs/python
new file mode 160000
+Subproject afd66d8b007018900db67f51df1ddb219cee661
diff --git a/libs/random b/libs/random
new file mode 160000
+Subproject 2ce8b67097ed5ad5848aa35a1a50e2785657425
diff --git a/libs/rational b/libs/rational
new file mode 160000
+Subproject 2acaf74773025a63b7efdbe1cd1d551c2809535
diff --git a/libs/regex b/libs/regex
new file mode 160000
+Subproject 89d13d13ae3ca29d349c4db2b0c4a6e1bdb2e30
diff --git a/libs/smart_ptr b/libs/smart_ptr
-Subproject c47f309991b83794f0f037a320dc223939d65b0
+Subproject f2c2b8875adc55a928b8fcf48ec0714aa38b3a8
diff --git a/libs/static_assert b/libs/static_assert
new file mode 160000
+Subproject 664fb875f30a28db43527b4ad85f760f8e6fd95
diff --git a/libs/test b/libs/test
new file mode 160000
+Subproject f7b551097c7fa748d870d55377412b7f42520a1
diff --git a/libs/timer b/libs/timer
new file mode 160000
+Subproject e9aef9a01b802f9b63471b015b32adbcb03838e
diff --git a/libs/type_traits b/libs/type_traits
new file mode 160000
+Subproject 448aa46ddb8fd281e6870c02b83e20c3db95c68
diff --git a/libs/utility b/libs/utility
new file mode 160000
+Subproject 61d88403a9a91de38a8eb50f180e1aa2d4d1a10
diff --git a/more/borland_cpp.html b/more/borland_cpp.html
new file mode 100644
index 0000000000..2a6a7b5e53
--- /dev/null
+++ b/more/borland_cpp.html
@@ -0,0 +1,362 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<title>Portability Hints: Borland C++ 5.5.1</title>
+</head>
+
+<body bgcolor="#FFFFFF" text="#000000">
+
+<table border="1" bgcolor="#007F7F" cellpadding="2">
+ <tr>
+ <td bgcolor="#FFFFFF"><img src="../c++boost.gif" alt="c++boost.gif (8819 bytes)" width="277" height="86"></td>
+ <td><a href="../index.htm"><font face="Arial,Helvetica" color="#FFFFFF"><big>Home</big></font></a></td>
+ <td><a href="../libs/libraries.htm"><font face="Arial,Helvetica" color="#FFFFFF"><big>Libraries</big></font></a></td>
+ <td><a href="../people/people.htm"><font face="Arial,Helvetica" color="#FFFFFF"><big>People</big></font></a></td>
+ <td><a href="faq.htm"><font face="Arial,Helvetica" color="#FFFFFF"><big>FAQ</big></font></a></td>
+ <td><a href="index.htm"><font face="Arial,Helvetica" color="#FFFFFF"><big>More</big></font></a></td>
+ </tr>
+</table>
+
+<p>
+
+<h1>Portability Hints: Borland C++ 5.5.1</h1>
+
+It is a general aim for boost libraries to be
+<a href="lib_guide.htm#Portability">portable</a>. The primary means
+for achieving this goal is to adhere to ISO Standard C++. However,
+ISO C++ is a broad and complex standard and most compilers are
+not fully conformant to ISO C++ yet. In order to achieve portability
+in the light of this restriction, it seems advisable to get acquainted
+with those language features that some compilers do not fully
+implement yet.
+<p>
+
+This page gives portability hints on some language features of the
+Borland C++ version 5.5.1 compiler. Furthermore, the appendix
+presents additional problems with Borland C++ version 5.5. Borland
+C++ 5.5.1 is a freely available command-line compiler for Win32
+available at
+<a href="http://www.borland.com/">http://www.borland.com/</a>.
+<p>
+
+Each entry in the following list describes a particular issue,
+complete with sample source code to demonstrate the effect.
+Most sample code herein has been verified to compile with gcc 2.95.2
+and Comeau C++ 4.2.44.
+
+
+<h2>Preprocessor symbol</h2>
+
+The preprocessor symbol <code>__BORLANDC__</code> is defined for all
+Borland C++ compilers. Its value is the version number of the
+compiler interpreted as a hexadecimal number. The following table
+lists some known values.
+<p>
+
+<table border="1">
+<tr>
+<th>Compiler</th>
+<th><code>__BORLANDC__</code> value</th>
+</tr>
+
+<tr>
+<td>Borland C++ Builder 4</td>
+<td>0x0540</td>
+</tr>
+
+<tr>
+<td>Borland C++ Builder 5</td>
+<td>0x0550</td>
+</tr>
+
+<tr>
+<td>Borland C++ 5.5</td>
+<td>0x0550</td>
+</tr>
+
+<tr>
+<td>Borland C++ 5.5.1</td>
+<td>0x0551</td>
+</tr>
+
+</table>
+
+<h2>Core Language</h2>
+
+<h3>[using-directive] Mixing <code>using</code>-declarations and
+<code>using</code>-directives</h3>
+
+Mixing <code>using</code>-directives (which refer to whole namespaces)
+and namespace-level <code>using</code>-declarations (which refer to
+individual identifiers within foreign namespaces) causes ambiguities
+where there are none. The following code fragment illustrates this:
+
+<pre>
+namespace N {
+ int x();
+}
+
+using N::x;
+using namespace N;
+
+int main()
+{
+ &x; // Ambiguous overload
+}
+</pre>
+
+
+<h3>[using template] <code>using</code>-declarations for class
+templates</h3>
+
+Identifiers for class templates can be used as arguments to
+<code>using</code>-declarations as any other identifier. However, the
+following code fails to compile with Borland C++:
+
+<pre>
+template&lt;class T&gt;
+class X { };
+
+namespace N
+{
+ // "cannot use template 'X<T>' without specifying specialization parameters"
+ using ::X;
+};
+</pre>
+
+
+<h3>[template const arg] Deduction of constant arguments to function
+templates</h3>
+
+Template function type deduction should omit top-level constness.
+However, this code fragment instantiates "f&lt;const int&gt;(int)":
+
+<pre>
+template&lt;class T&gt;
+void f(T x)
+{
+ x = 1; // works
+ (void) &x;
+ T y = 17;
+ y = 20; // "Cannot modify a const object in function f<const int>(int)"
+ (void) &y;
+}
+
+int main()
+{
+ const int i = 17;
+ f(i);
+}
+</pre>
+
+The boost/rational.hpp header exhibits this problem in connection with
+the gcd() function.
+
+
+<h3>[function address] Resolving addresses of overloaded
+functions</h3>
+
+Addresses of overloaded functions are not in all contexts properly
+resolved (std:13.4 [over.over]); here is a small example:
+<pre>
+template&lt;class Arg&gt;
+void f( void(*g)(Arg) );
+
+void h(int);
+void h(double);
+
+template&lt;class T&gt;
+void h2(T);
+
+int main()
+{
+ void (*p)(int) = h; // this works (std:13.4-1.1)
+ void (*p2)(unsigned char) = h2; // this works as well (std:13.4-1.1)
+ f&lt;int&gt;(h2); // this also works (std:13.4-1.3)
+
+ // "Cannot generate template specialization from h(int)",
+ // "Could not find a match for f&lt;Arg&gt;(void (*)(int))"
+ f&lt;double&gt;(h); // should work (std:13.4-1.3)
+
+ f( (void(*)(double))h); // C-style cast works (std:13.4-1.6 with 5.4)
+
+ // "Overloaded 'h' ambiguous in this context"
+ f(static_cast&lt;void(*)(double)&gt;(h)); // should work (std:13.4-1.6 with 5.2.9)
+}
+</pre>
+
+<strong>Workaround:</strong> Always use C-style casts when determining
+addresses of (potentially) overloaded functions.
+
+<h3>[string conversion] Converting <code>const char *</code> to
+<code>std::string</code></h3>
+
+Implicitly converting <code>const char *</code> parameters to
+<code>std::string</code> arguments fails if template functions are
+explicitly instantiated (it works in the usual cases, though):
+
+<pre>
+#include &lt;string&gt;
+
+template&lt;class T&gt;
+void f(const std::string &amp; s)
+{}
+
+int main()
+{
+ f&lt;double&gt;("hello"); // "Could not find a match for f&lt;T&gt;(char *)"
+}
+
+</pre>
+
+<strong>Workaround:</strong> Avoid explicit template function
+instantiations (they have significant problems with Microsoft Visual
+C++) and pass default-constructed unused dummy arguments with the
+appropriate type. Alternatively, if you wish to keep to the explicit
+instantiation, you could use an explicit conversion to
+<code>std::string</code> or declare the template function as taking a
+<code>const char *</code> parameter.
+
+
+<h3>[template value defaults] Dependent default arguments for template
+value parameters</h3>
+
+Template value parameters which default to an expression dependent on
+previous template parameters don't work:
+
+<pre>
+template&lt;class T&gt;
+struct A
+{
+ static const bool value = true;
+};
+
+// "Templates must be classes or functions", "Declaration syntax error"
+template&lt;class T, bool v = A&lt;T&gt;::value&gt;
+struct B {};
+
+int main()
+{
+ B&lt;int&gt; x;
+}
+
+</pre>
+
+
+<strong>Workaround:</strong> If the relevant non-type template
+parameter is an implementation detail, use inheritance and a fully
+qualified identifier (for example, ::N::A&lt;T&gt;::value).
+
+
+<h3>[function partial ordering] Partial ordering of function
+templates</h3>
+
+Partial ordering of function templates, as described in std:14.5.5.2
+[temp.func.order], does not work:
+
+<pre>
+#include &lt;iostream&gt;
+
+template&lt;class T&gt; struct A {};
+
+template&lt;class T1&gt;
+void f(const A&lt;T1&gt; &)
+{
+ std::cout << "f(const A&lt;T1&gt;&)\n";
+}
+
+template&lt;class T&gt;
+void f(T)
+{
+ std::cout << "f(T)\n";
+}
+
+int main()
+{
+ A&lt;double&gt; a;
+ f(a); // output: f(T) (wrong)
+ f(1); // output: f(T) (correct)
+}
+</pre>
+
+<strong>Workaround:</strong> Declare all such functions uniformly as
+either taking a value or a reference parameter.
+
+
+<h2>Library</h2>
+
+
+<h3>[cmath.abs] Function <code>double std::abs(double)</code>
+missing</h3>
+
+The function <code>double std::abs(double)</code> should be defined
+(std:26.5-5 [lib.c.math]), but it is not:
+
+<pre>
+#include &lt;cmath&gt;
+
+int main()
+{
+ double (*p)(double) = std::abs; // error
+}
+</pre>
+
+Note that <code>int std::abs(int)</code> will be used without warning
+if you write <code>std::abs(5.1)</code>.
+<p>
+Similar remarks apply to seemingly all of the other standard math
+functions, where Borland C++ fails to provide <code>float</code> and
+<code>long double</code> overloads.
+<p>
+<strong>Workaround:</strong> Use <code>std::fabs</code> instead if
+type genericity is not required.
+
+<h2>Appendix: Additional issues with Borland C++ version 5.5</h2>
+
+These issues are documented mainly for historic reasons. If you are
+still using Borland C++ version 5.5, you are strongly encouraged to
+obtain an upgrade to version 5.5.1, which fixes the issues described
+in this section.
+
+<h3>[inline friend] Inline friend functions in template classes</h3>
+
+If a friend function of some class has not been declared before the
+friend function declaration, the function is declared at the namespace
+scope surrounding the class definition. Together with class templates
+and inline definitions of friend functions, the code in the following
+fragment should declare (and define) a non-template function "bool
+N::f(int,int)", which is a friend of class N::A&lt;int&gt;. However,
+Borland C++ v5.5 expects the function f to be declared beforehand:
+
+<pre>
+namespace N {
+template&lt;class T&gt;
+class A
+{
+ // "f is not a member of 'N' in function main()"
+ friend bool f(T x, T y) { return x < y; }
+};
+}
+
+int main()
+{
+ N::A&lt;int&gt; a;
+}
+</pre>
+
+This technique is extensively used in boost/operators.hpp. Giving in
+to the wish of the compiler doesn't work in this case, because then
+the "instantiate one template, get lots of helper functions at
+namespace scope" approach doesn't work anymore. Defining
+BOOST_NO_OPERATORS_IN_NAMESPACE (a define
+BOOST_NO_INLINE_FRIENDS_IN_CLASS_TEMPLATES would match this case
+better) works around this problem and leads to another one, see
+[using-template].
+
+<p>
+
+<hr>
+
+2000-09-30 <a href="../people/jens_maurer.htm">Jens Maurer</a>
+</body>
+</html>
diff --git a/more/count_bdy.htm b/more/count_bdy.htm
new file mode 100644
index 0000000000..0dd6f0bc79
--- /dev/null
+++ b/more/count_bdy.htm
@@ -0,0 +1,1166 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
+
+<HTML>
+
+<HEAD>
+
+ <TITLE>Counted Body Techniques</TITLE>
+
+ <META NAME="GENERATOR" CONTENT="Microsoft FrontPage 4.0">
+
+ <META NAME="Author" CONTENT="Kevlin Henney">
+
+ <META NAME="KeyWords" CONTENT="C++, Reference Counting, Advanced Techniques, Smart Pointers, Patterns">
+
+</HEAD>
+
+<BODY bgcolor="#FFFFFF" text="#000000">
+
+
+
+<H1 ALIGN=CENTER><I><FONT SIZE=+4>Counted Body Techniques</FONT></I></H1>
+
+
+
+<CENTER><P><B><FONT SIZE=+1><a href="../people/kevlin_henney.htm">Kevlin Henney</a><BR>
+
+</FONT>(<A HREF="mailto:kevlin@acm.org">kevlin@acm.org</A>, <a HREF="mailto:khenney@qatraining.com">khenney@qatraining.com</a>)</B></P></CENTER>
+
+
+
+<UL>
+
+<P>Reference counting techniques? Nothing new, you might think. Every good
+
+C++ text that takes you to an intermediate or advanced level will introduce
+
+the concept. It has been explored with such thoroughness in the past that
+
+you might be forgiven for thinking that everything that can be said has
+
+been said. Well, let's start from first principles and see if we can unearth
+
+something new....</P>
+
+</UL>
+
+
+
+
+<HR WIDTH="100%">
+<H2>And then there were none...</H2>
+
+
+<UL>
+
+<P>The principle behind reference counting is to keep a running usage count
+
+of an object so that when it falls to zero we know the object is unused.
+
+This is normally used to simplify the memory management for dynamically
+
+allocated objects: keep a count of the number of references held to that
+
+object and, on zero, delete the object.</P>
+
+
+
+<P>How to keep a track of the number of users of an object? Well, normal
+
+pointers are quite dumb, and so an extra level of indirection is required
+
+to manage the count. This is essentially the P<FONT SIZE=-1>ROXY</FONT>
+
+pattern described in <I>Design Patterns</I> [Gamma, Helm, Johnson &amp;
+
+Vlissides, Addison-Wesley, <FONT SIZE=-1>ISBN </FONT>0-201-63361-2]. The
+
+intent is given as</P>
+
+
+
+<UL>
+
+<P><I>Provide a surrogate or placeholder for another object to control
+
+access to it.</I></P>
+
+</UL>
+
+
+
+<P>Coplien [<I>Advanced C++ Programming Styles and Idioms</I>, Addison-Wesley,
+
+<FONT SIZE=-1>ISBN </FONT>0-201-56365-7] defines a set of idioms related
+
+to this essential separation of a handle and a body part. The <I>Taligent
+
+Guide to Designing Programs </I>[Addison-Wesley, <FONT SIZE=-1>ISBN </FONT>0-201-40888-0]
+
+identifies a number of specific categories for proxies (aka surrogates).
+
+Broadly speaking they fall into two general categories:</P>
+
+
+
+<UL>
+
+<LI><I>Hidden</I>: The handle is the object of interest, hiding the body
+
+itself. The functionality of the handle is obtained by delegation to the
+
+body, and the user of the handle is unaware of the body. Reference counted
+
+strings offer a transparent optimisation. The body is shared between copies
+
+of a string until such a time as a change is needed, at which point a copy
+
+is made. Such a C<FONT SIZE=-1>OPY</FONT> <FONT SIZE=-1>ON</FONT> W<FONT SIZE=-1>RITE</FONT>
+
+pattern (a specialisation of L<FONT SIZE=-1>AZY</FONT> E<FONT SIZE=-1>VALUATION</FONT>)
+
+requires the use of a hidden reference counted body.</LI>
+
+
+
+<LI><I>Explicit</I>: Here the body is of interest and the handle merely
+
+provides intelligence for its access and housekeeping. In C++ this is often
+
+implemented as the S<FONT SIZE=-1>MART</FONT> P<FONT SIZE=-1>OINTER</FONT>
+
+idiom. One such application is that of reference counted smart pointers
+
+that collaborate to keep a count of an object, deleting it when the count
+
+falls to zero.</LI>
+
+</UL>
+
+</UL>
+
+
+
+
+<HR WIDTH="100%">
+<H2>Attached vs detached</H2>
+
+
+<UL>
+
+<P>For reference counted smart pointers there are two places the count
+
+can exist, resulting in two different patterns, both outlined in <I>Software
+
+Patterns</I> [Coplien, SIGS, <FONT SIZE=-1>ISBN </FONT>0-884842-50-X]:</P>
+
+
+
+<UL>
+
+<LI>C<FONT SIZE=-1>OUNTED</FONT> B<FONT SIZE=-1>ODY</FONT> or A<FONT SIZE=-1>TTACHED</FONT>
+
+C<FONT SIZE=-1>OUNTED</FONT> H<FONT SIZE=-1>ANDLE</FONT>/B<FONT SIZE=-1>ODY</FONT>
+
+places the count within the object being counted. The benefits are that
+
+countability is a part of the object being counted, and that reference
+
+counting does not require an additional object. The drawbacks are clearly
+
+that this is intrusive, and that the space for the reference count is wasted
+
+when the object is not heap based. Therefore the reference counting ties
+
+you to a particular implementation and style of use.</LI>
+
+
+
+<LI>D<FONT SIZE=-1>ETACHED</FONT> C<FONT SIZE=-1>OUNTED</FONT> H<FONT SIZE=-1>ANDLE</FONT>/B<FONT SIZE=-1>ODY</FONT>
+
+places the count outside the object being counted, such that they are handled
+
+together. The clear benefit of this is that this technique is completely
+
+unintrusive, with all of the intelligence and support apparatus in the
+
+smart pointer, and therefore can be used on classes created independently
+
+of the reference counted pointer. The main disadvantage is that frequent
+
+use of this can lead to a proliferation of small objects, i.e. the counter,
+
+being created on the heap.</LI>
+
+</UL>
+
+
+
+<P>Even with this simple analysis, it seems that the D<FONT SIZE=-1>ETACHED</FONT>
+
+C<FONT SIZE=-1>OUNTED</FONT> H<FONT SIZE=-1>ANDLE</FONT>/B<FONT SIZE=-1>ODY</FONT>
+
+approach is ahead. Indeed, with the increasing use of templates this is
+
+often the favourite, and is the principle behind the common - but not standard
+
+- <TT><FONT SIZE=+1>counted_ptr</FONT></TT>.
+<I>[The Boost name is <a href="../libs/smart_ptr/shared_ptr.htm"><TT><FONT SIZE=+1>shared_ptr</FONT></TT></a>
+
+rather than <TT><FONT SIZE=+1>counted_ptr</FONT></TT>.]</I></P>
+
+
+
+<P>A common implementation of C<FONT SIZE=-1>OUNTED</FONT> B<FONT SIZE=-1>ODY</FONT>
+
+is to provide the counting mechanism in a base class that the counted type
+
+is derived from. Either that, or the reference counting mechanism is provided
+
+anew for each class that needs it. Both of these approaches are unsatisfactory
+
+because they are quite closed, coupling a class into a particular framework.
+
+Added to this the non-cohesiveness of having the count lying dormant in
+
+a non-counted object, and you get the feeling that excepting its use in
+
+widespread object models such as COM and CORBA the C<FONT SIZE=-1>OUNTED</FONT>
+
+B<FONT SIZE=-1>ODY</FONT> approach is perhaps only of use in specialised
+
+situations.</P>
+
+</UL>
+
+
+
+<HR WIDTH="100%">
+<H2>A requirements based approach</H2>
+
+
+<UL>
+
+<P>It is the question of openness that convinced me to revisit the problems
+
+with the C<FONT SIZE=-1>OUNTED</FONT> B<FONT SIZE=-1>ODY</FONT> idiom.
+
+Yes, there is a certain degree of intrusion expected when using this idiom,
+
+but is there anyway to minimise this and decouple the choice of counting
+
+mechanism from the smart pointer type used?</P>
+
+
+
+<P>In recent years the most instructive body of code and specification
+
+for constructing open general purpose components has been the Stepanov
+
+and Lee's STL (Standard Template Library), now part of the C++ standard
+
+library. The STL approach makes extensive use of compile time polymorphism
+
+based on well defined operational requirements for types. For instance,
+
+each container, contained and iterator type is defined by the operations
+
+that should be performable on an object of that type, often with annotations
+
+describing additional constraints. Compile time polymorphism, as its name
+
+suggests, resolves functions at compile time based on function name and
+
+argument usage, i.e. overloading. This is less intrusive, although less
+
+easily diagnosed if incorrect, than runtime poymorphism that is based on
+
+types, names and function signatures.</P>
+
+
+
+<P>This requirements based approach can be applied to reference counting.
+
+The operations we need for a type to be <I>Countable</I> are loosely:</P>
+
+
+
+<UL>
+
+<LI>An <TT><FONT SIZE=+1>acquire</FONT></TT> operation that registers interest
+
+in a <I>Countable </I>object.</LI>
+
+
+
+<LI>A <TT><FONT SIZE=+1>release</FONT></TT> operation unregisters interest
+
+in a <I>Countable </I>object.</LI>
+
+
+
+<LI>An <TT><FONT SIZE=+1>acquired</FONT></TT> query that returns whether
+
+or not a <I>Countable </I>object is currently acquired.</LI>
+
+
+
+<LI>A <TT><FONT SIZE=+1>dispose</FONT></TT> operation that is responsible
+
+for disposing of an object that is no longer acquired.</LI>
+
+</UL>
+
+
+
+<P>Note that the count is deduced as a part of the abstract state of this
+
+type, and is not mentioned or defined in any other way. The openness of
+
+this approach derives in part from the use of global functions, meaning
+
+that no particular member functions are implied; a perfect way to wrap
+
+up an existing counted body class without modifying the class itself. The
+
+other aspect to the openness comes from a more precise specification of
+
+the operations.</P>
+
+
+
+<P>For a type to be <I>Countable</I> it must satisfy the following requirements,
+
+where <TT><FONT SIZE=+1>ptr</FONT></TT> is a non-null pointer to a single
+
+object (i.e. not an array) of the type, and <I><TT><FONT SIZE=+1>#function</FONT></TT></I>
+
+indicates number of calls to <TT><FONT SIZE=+1><I>function(</I>ptr<I>)</I></FONT></TT>:</P>
+
+
+
+<CENTER><TABLE BORDER=1 CELLSPACING=2 CELLPADDING=2 >
+
+<TR>
+
+<TD><I>Expression</I></TD>
+
+
+
+<TD><I>Return type</I></TD>
+
+
+
+<TD><I>Semantics and notes</I></TD>
+
+</TR>
+
+
+
+<TR>
+
+<TD><TT><FONT SIZE=+1>acquire(ptr)</FONT></TT></TD>
+
+
+
+<TD>no requirement</TD>
+
+
+
+<TD><I>post</I>: <TT><FONT SIZE=+1>acquired(ptr)</FONT></TT></TD>
+
+</TR>
+
+
+
+<TR>
+
+<TD><TT><FONT SIZE=+1>release(ptr)</FONT></TT></TD>
+
+
+
+<TD>no requirement</TD>
+
+
+
+<TD><I>pre</I>: <TT><FONT SIZE=+1>acquired(ptr)<BR>
+
+</FONT></TT><I>post</I>: <TT><FONT SIZE=+1>acquired(ptr) == #acquire -
+
+#release</FONT></TT></TD>
+
+</TR>
+
+
+
+<TR>
+
+<TD><TT><FONT SIZE=+1>acquired(ptr)</FONT></TT></TD>
+
+
+
+<TD>convertible to <TT><FONT SIZE=+1>bool</FONT></TT></TD>
+
+
+
+<TD><I>return</I>: <TT><FONT SIZE=+1>#acquire &gt; #release</FONT></TT></TD>
+
+</TR>
+
+
+
+<TR>
+
+<TD><TT><FONT SIZE=+1>dispose(ptr, ptr)</FONT></TT></TD>
+
+
+
+<TD>no requirement</TD>
+
+
+
+<TD><I>pre</I>: <TT><FONT SIZE=+1>!acquired(ptr)<BR>
+
+</FONT></TT><I>post</I>: <TT><FONT SIZE=+1>*ptr</FONT></TT> no longer usable</TD>
+
+</TR>
+
+</TABLE></CENTER>
+
+
+
+<P>Note that the two arguments to <TT><FONT SIZE=+1>dispose</FONT></TT>
+
+are to support selection of the appropriate type safe version of the function
+
+to be called. In the general case the intent is that the first argument
+
+determines the type to be deleted, and would typically be templated, while
+
+the second selects which template to use, e.g. by conforming to a specific
+
+base class.</P>
+
+
+
+<P>In addition the following requirements must also be satisfied, where
+
+<TT><FONT SIZE=+1>null</FONT></TT> is a null pointer to the <I>Countable</I>
+
+type:</P>
+
+
+
+<CENTER><TABLE BORDER=1 >
+
+<TR>
+
+<TD><I>Expression</I></TD>
+
+
+
+<TD><I>Return type</I></TD>
+
+
+
+<TD><I>Semantics and notes</I></TD>
+
+</TR>
+
+
+
+<TR>
+
+<TD><TT><FONT SIZE=+1>acquire(null)</FONT></TT></TD>
+
+
+
+<TD>no requirement</TD>
+
+
+
+<TD><I>action</I>: none</TD>
+
+</TR>
+
+
+
+<TR>
+
+<TD><TT><FONT SIZE=+1>release(null)</FONT></TT></TD>
+
+
+
+<TD>no requirement</TD>
+
+
+
+<TD><I>action</I>: none</TD>
+
+</TR>
+
+
+
+<TR>
+
+<TD><TT><FONT SIZE=+1>acquired(null)</FONT></TT></TD>
+
+
+
+<TD>convertible to <TT><FONT SIZE=+1>bool</FONT></TT></TD>
+
+
+
+<TD><I>return</I>: <TT><FONT SIZE=+1>false</FONT></TT></TD>
+
+</TR>
+
+
+
+<TR>
+
+<TD><TT><FONT SIZE=+1>dispose(null, null)</FONT></TT></TD>
+
+
+
+<TD>no requirement</TD>
+
+
+
+<TD><I>action</I>: none</TD>
+
+</TR>
+
+</TABLE></CENTER>
+
+
+
+<P>Note that there are no requirements on these functions in terms of exceptions
+
+thrown or not thrown, except that if exceptions are thrown the functions
+
+themselves should be exception safe.</P>
+
+</UL>
+
+
+
+<HR WIDTH="100%">
+<H2>Getting smart</H2>
+
+
+<UL>
+
+<P>Given the <I>Countable</I> requirements for a type, it is possible to
+
+define a generic smart pointer type that uses them for reference counting:</P>
+
+
+
+<UL>
+<PRE><TT>template&lt;typename countable_type&gt;
+class countable_ptr
+{
+public: // construction and destruction
+
+ explicit countable_ptr(countable_type *);
+ countable_ptr(const countable_ptr &amp;);
+ ~countable_ptr();
+
+public: // access
+
+ countable_type *operator-&gt;() const;
+ countable_type &amp;operator*() const;
+ countable_type *get() const;
+
+public: // modification
+
+ countable_ptr &amp;clear();
+ countable_ptr &amp;assign(countable_type *);
+ countable_ptr &amp;assign(const countable_ptr &amp;);
+ countable_ptr &amp;operator=(const countable_ptr &amp;);
+
+private: // representation
+
+ countable_type *body;
+
+};
+</TT></PRE>
+
+</UL>
+
+
+
+<P>The interface to this class has been kept intentionally simple, e.g.
+
+member templates and <TT><FONT SIZE=+1>throw</FONT></TT> specs have been
+
+omitted, for exposition. The majority of the functions are quite simple
+
+in implementation, relying very much on the <TT><FONT SIZE=+1>assign</FONT></TT>
+
+member as a keystone function:</P>
+
+
+
+<UL>
+
+<PRE><TT>template&lt;typename countable_type&gt;
+countable_ptr&lt;countable_type&gt;::countable_ptr(countable_type *initial)
+ : body(initial)
+{
+ acquire(body);
+}
+
+template&lt;typename countable_type&gt;
+countable_ptr&lt;countable_type&gt;::countable_ptr(const countable_ptr &amp;other)
+ : body(other.body)
+{
+ acquire(body);
+}
+
+template&lt;typename countable_type&gt;
+countable_ptr&lt;countable_type&gt;::~countable_ptr()
+{
+ clear();
+}
+
+template&lt;typename countable_type&gt;
+countable_type *countable_ptr&lt;countable_type&gt;::operator-&gt;() const
+{
+ return body;
+}
+
+template&lt;typename countable_type&gt;
+countable_type &amp;countable_ptr&lt;countable_type&gt;::operator*() const
+{
+ return *body;
+}
+
+template&lt;typename countable_type&gt;
+countable_type *countable_ptr&lt;countable_type&gt;::get() const
+{
+ return body;
+}
+
+template&lt;typename countable_type&gt;
+countable_ptr&lt;countable_type&gt; &amp;countable_ptr&lt;countable_type&gt;::clear()
+{
+ return assign(0);
+}
+
+template&lt;typename countable_type&gt;
+countable_ptr&lt;countable_type&gt; &amp;countable_ptr&lt;countable_type&gt;::assign(countable_type *rhs)
+{
+ // set to rhs (uses Copy Before Release idiom which is self assignment safe)
+ acquire(rhs);
+ countable_type *old_body = body;
+ body = rhs;
+
+ // tidy up
+ release(old_body);
+ if(!acquired(old_body))
+ {
+ dispose(old_body, old_body);
+ }
+
+ return *this;
+}
+
+template&lt;typename countable_type&gt;
+countable_ptr&lt;countable_type&gt; &amp;countable_ptr&lt;countable_type&gt;::assign(const countable_ptr &amp;rhs)
+{
+ return assign(rhs.body);
+}
+
+template&lt;typename countable_type&gt;
+countable_ptr&lt;countable_type&gt; &amp;countable_ptr&lt;countable_type&gt;::operator=(const countable_ptr &amp;rhs)
+{
+ return assign(rhs);
+}
+</TT></PRE>
+
+</UL>
+
+</UL>
+
+
+
+<HR WIDTH="100%">
+<H2>Public accountability</H2>
+
+
+<UL>
+
+<P>Conformance to the requirements means that a type can be used with <TT><FONT SIZE=+1>countable_ptr</FONT></TT>.
+
+Here is an implementation mix-in class (<I>mix-imp</I>) that confers countability
+
+on its derived classes through member functions. This class can be used
+
+as a class adaptor:</P>
+
+
+
+<UL>
+
+<PRE><TT>class countability
+{
+public: // manipulation
+
+ void acquire() const;
+ void release() const;
+ size_t acquired() const;
+
+protected: // construction and destruction
+
+ countability();
+ ~countability();
+
+private: // representation
+
+ mutable size_t count;
+
+private: // prevention
+
+ countability(const countability &amp;);
+ countability &amp;operator=(const countability &amp;);
+
+};
+</TT></PRE>
+
+</UL>
+
+
+
+<P>Notice that the manipulation functions are <TT><FONT SIZE=+1>const</FONT></TT>
+
+and that the <TT><FONT SIZE=+1>count</FONT></TT> member itself is <TT><FONT SIZE=+1>mutable</FONT></TT>.
+
+This is because countability is not a part of an object's abstract state:
+
+memory management does not depend on the <TT><FONT SIZE=+1>const</FONT></TT>-ness
+
+or otherwise of an object. I won't include the definitions of the member
+
+functions here as you can probably guess them: increment, decrement and
+
+return the current count, respectively for the manipulation functions.
+
+In a multithreaded environment you should ensure that such read and write
+
+operations are atomic.</P>
+
+
+
+<P>So how do we make this class <I>Countable</I>? A simple set of forwarding
+
+functions does the job:</P>
+
+
+
+<UL>
+
+<PRE><TT>void acquire(const countability *ptr)
+{
+ if(ptr)
+ {
+ ptr-&gt;acquire();
+ }
+}
+
+void release(const countability *ptr)
+{
+ if(ptr)
+ {
+ ptr-&gt;release();
+ }
+}
+
+size_t acquired(const countability *ptr)
+{
+ return ptr ? ptr-&gt;acquired() : 0;
+}
+
+template&lt;class countability_derived&gt;
+void dispose(const countability_derived *ptr, const countability *)
+{
+ delete ptr;
+}
+</TT></PRE>
+
+</UL>
+
+
+
+<P>Any type that now derives from <TT><FONT SIZE=+1>countability</FONT></TT>
+
+may now be used with <TT><FONT SIZE=+1>countable_ptr</FONT></TT>:</P>
+
+
+
+<UL>
+
+<PRE><TT>class example : public countability
+{
+ ...
+};
+
+void simple()
+{
+ countable_ptr&lt;example&gt; ptr(new example);
+ countable_ptr&lt;example&gt; qtr(ptr);
+ ptr.clear(); // set ptr to point to null
+} // allocated object deleted when qtr destructs
+</TT></PRE>
+</UL>
+</UL>
+
+
+
+
+<HR WIDTH="100%">
+<H2>Runtime mixin</H2>
+
+
+<UL>
+
+<P>The challenge is to apply C<FONT SIZE=-1>OUNTED</FONT> B<FONT SIZE=-1>ODY</FONT>
+
+in a non-intrusive fashion, such that there is no overhead when an object
+
+is not counted. What we would like to do is confer this capability on a
+
+per object rather than on a per class basis. Effectively we are after <I>Countability
+
+</I>on any object, i.e. anything pointed to by a <TT><FONT SIZE=+1>void
+
+*</FONT></TT>! It goes without saying that <TT><FONT SIZE=+1>void</FONT></TT>
+
+is perhaps the least committed of any type.</P>
+
+
+
+<P>The forces to resolve on this are quite interesting, to say the least.
+
+Interesting, but not insurmountable. Given that the class of a runtime
+
+object cannot change dynamically in any well defined manner, and the layout
+
+of the object must be fixed, we have to find a new place and time to add
+
+the counting state. The fact that this must be added only on heap creation
+
+suggests the following solution:</P>
+
+
+
+<UL>
+
+<PRE><TT>struct countable_new;
+extern const countable_new countable;
+
+void *operator new(size_t, const countable_new &amp;);
+void operator delete(void *, const countable_new &amp;);</TT></PRE>
+</UL>
+
+
+
+<P>We have overloaded <TT><FONT SIZE=+1>operator new</FONT></TT> with a
+
+dummy argument to distinguish it from the regular global <TT><FONT SIZE=+1>operator
+
+new</FONT></TT>. This is comparable to the use of the <TT><FONT SIZE=+1>std::nothrow_t</FONT></TT>
+
+type and <TT><FONT SIZE=+1>std::nothrow</FONT></TT> object in the standard
+
+library. The placement <TT><FONT SIZE=+1>operator delete</FONT></TT> is
+
+there to perform any tidy up in the event of failed construction. Note
+
+that this is not yet supported on all that many compilers.</P>
+
+
+
+<P>The result of a <TT><FONT SIZE=+1>new</FONT></TT> expression using <TT><FONT SIZE=+1>countable</FONT></TT>
+
+is an object allocated on the heap that has a header block that holds the
+
+count, i.e. we have extended the object by prefixing it. We can provide
+
+a couple of features in an anonymous namespace (not shown) in the implementation
+
+file for for supporting the count and its access from a raw pointer:</P>
+
+
+
+<UL>
+
+<PRE><TT>struct count
+{
+ size_t value;
+};
+
+count *header(const void *ptr)
+{
+ return const_cast&lt;count *&gt;(static_cast&lt;const count *&gt;(ptr) - 1);
+}
+</TT></PRE>
+
+</UL>
+
+
+
+<P>An important constraint to observe here is the alignment of <TT><FONT SIZE=+1>count</FONT></TT>
+
+should be such that it is suitably aligned for any type. For the definition
+
+shown this will be the case on almost all platforms. However, you may need
+
+to add a padding member for those that don't, e.g. using an anonymous <TT><FONT SIZE=+1>union</FONT></TT>
+
+to coalign <TT><FONT SIZE=+1>count</FONT></TT> and the most aligned type.
+
+Unfortunately, there is no portable way of specifying this such that the
+
+minimum alignment is also observed - this is a common problem when specifying
+
+your own allocators that do not directly use the results of either <TT><FONT SIZE=+1>new</FONT></TT>
+
+or <TT><FONT SIZE=+1>malloc</FONT></TT>.</P>
+
+
+
+<P>Again, note that the count is not considered to be a part of the logical
+
+state of the object, and hence the conversion from <TT><FONT SIZE=+1>const</FONT></TT>
+
+to non-<TT><FONT SIZE=+1>const</FONT></TT> - <TT><FONT SIZE=+1>count</FONT></TT>
+
+is in effect a <TT><FONT SIZE=+1>mutable</FONT></TT> type.</P>
+
+
+
+<P>The allocator functions themselves are fairly straightforward:</P>
+
+
+
+<UL>
+
+<PRE><TT>void *operator new(size_t size, const countable_new &amp;)
+{
+ count *allocated = static_cast&lt;count *&gt;(::operator new(sizeof(count) + size));
+ *allocated = count(); // initialise the header
+ return allocated + 1; // adjust result to point to the body
+}
+
+void operator delete(void *ptr, const countable_new &amp;)
+{
+ ::operator delete(header(ptr));
+}
+</TT></PRE>
+
+</UL>
+
+
+
+<P>Given a correctly allocated header, we now need the <I>Countable </I>functions
+
+to operate on <TT><FONT SIZE=+1>const void *</FONT></TT> to complete the
+
+picture:</P>
+
+
+
+<UL>
+
+<PRE><TT>void acquire(const void *ptr)
+{
+ if(ptr)
+ {
+ ++header(ptr)-&gt;value;
+ }
+}
+
+void release(const void *ptr)
+{
+ if(ptr)
+ {
+ --header(ptr)-&gt;value;
+ }
+}
+
+size_t acquired(const void *ptr)
+{
+ return ptr ? header(ptr)-&gt;value : 0;
+}
+
+template&lt;typename countable_type&gt;
+void dispose(const countable_type *ptr, const void *)
+{
+ ptr-&gt;~countable_type();
+ operator delete(const_cast&lt;countable_type *&gt;(ptr), countable);
+}
+</TT></PRE>
+
+</UL>
+
+
+
+<P>The most complex of these is the <TT><FONT SIZE=+1>dispose</FONT></TT>
+
+function that must ensure that the correct type is destructed and also
+
+that the memory is collected from the correct offset. It uses the value
+
+and type of first argument to perform this correctly, and the second argument
+
+merely acts as a strategy selector, i.e. the use of <TT><FONT SIZE=+1>const
+
+void *</FONT></TT> distinguishes it from the earlier dispose shown for
+
+<TT><FONT SIZE=+1>const countability *</FONT></TT>.</P>
+
+</UL>
+
+
+
+
+<HR WIDTH="100%">
+<H2>Getting smarter</H2>
+
+
+
+<UL>
+
+<P>Now that we have a way of adding countability at creation for objects
+
+of any type, what extra is needed to make this work with the <TT><FONT SIZE=+1>countable_ptr</FONT></TT>
+
+we defined earlier? Good news: nothing!</P>
+
+
+
+<UL>
+
+<PRE><TT>class example
+{
+ ...
+};
+
+void simple()
+{
+ countable_ptr&lt;example&gt; ptr(new(countable) example);
+ countable_ptr&lt;example&gt; qtr(ptr);
+ ptr.clear(); // set ptr to point to null
+} // allocated object deleted when qtr destructs
+</TT></PRE>
+
+</UL>
+
+
+
+<P>The <TT><FONT SIZE=+1>new(countable)</FONT></TT> expression defines
+
+a different policy for allocation and deallocation and, in common with
+
+other allocators, any attempt to mix your allocation policies, e.g. call
+
+<TT><FONT SIZE=+1>delete</FONT></TT> on an object allocated with <TT><FONT SIZE=+1>new(countable)</FONT></TT>,
+
+results in undefined behaviour. This is similar to what happens when you
+
+mix <TT><FONT SIZE=+1>new[]</FONT></TT> with <TT><FONT SIZE=+1>delete</FONT></TT>
+
+or <TT><FONT SIZE=+1>malloc</FONT></TT> with <TT><FONT SIZE=+1>delete</FONT></TT>.
+
+The whole point of <I>Countable </I>conformance is that <I>Countable </I>objects
+
+are used with <TT><FONT SIZE=+1>countable_ptr</FONT></TT>, and this ensures
+
+the correct use.</P>
+
+
+
+<P>However, accidents will happen, and inevitably you may forget to allocate
+
+using <TT><FONT SIZE=+1>new(countable)</FONT></TT> and instead use <TT><FONT SIZE=+1>new</FONT></TT>.
+
+This error and others can be detected in most cases by extending the code
+
+shown here to add a check member to the <TT><FONT SIZE=+1>count</FONT></TT>,
+
+validating the check on every access. A benefit of ensuring clear separation
+
+between header and implementation source files means that you can introduce
+
+a checking version of this allocator without having to recompile your code.</P>
+
+</UL>
+
+
+
+
+<HR WIDTH="100%">
+<H2>Conclusion</H2>
+
+
+
+<UL>
+
+<P>There are two key concepts that this article has introduced:</P>
+
+
+
+<UL>
+
+<LI>The use of a generic requirements based approach to simplify and adapt
+
+the use of the C<FONT SIZE=-1>OUNTED</FONT> B<FONT SIZE=-1>ODY</FONT> pattern.</LI>
+
+
+
+<LI>The ability, through control of allocation, to dynamically and non-intrusively
+
+add capabilities to fixed types using the R<FONT SIZE=-1>UNTIME</FONT>
+
+M<FONT SIZE=-1>IXIN</FONT> pattern.</LI>
+
+</UL>
+
+
+
+<P>The application of the two together gives rise to a new variant of the
+
+essential C<FONT SIZE=-1>OUNTED</FONT> B<FONT SIZE=-1>ODY</FONT> pattern,
+
+U<FONT SIZE=-1>NINTRUSIVE</FONT> C<FONT SIZE=-1>OUNTED</FONT> B<FONT SIZE=-1>ODY</FONT>.
+
+You can take this theme even further and contrive a simple garbage collection
+
+system for C++.</P>
+
+
+
+<P>The complete code for <TT><FONT SIZE=+1>countable_ptr</FONT></TT>, <TT><FONT SIZE=+1>countability</FONT></TT>,
+
+and the <TT><FONT SIZE=+1>countable new</FONT></TT> is also available.</P>
+
+</UL>
+
+
+
+<DIV ALIGN=right><P>
+
+<HR WIDTH="100%"><FONT SIZE=-1><I>First published in </I><a href="http://www.accu.org/c++sig/public/Overload.html">Overload</a> <I>25,
+
+April 1998, ISSN 1354-3172<BR>
+
+&copy; Copyright Kevlin Henney, 1998, 1999</I></FONT></DIV>
+
+
+
+</BODY>
+
+</HTML>
+
diff --git a/more/discussion_policy.htm b/more/discussion_policy.htm
new file mode 100644
index 0000000000..6047d6ad70
--- /dev/null
+++ b/more/discussion_policy.htm
@@ -0,0 +1,108 @@
+<html>
+
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
+<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
+<meta name="ProgId" content="FrontPage.Editor.Document">
+<title>Boost Discussion Policy</title>
+</head>
+
+<body bgcolor="#FFFFFF" text="#000000">
+
+<table border="1" bgcolor="#007F7F" cellpadding="2">
+ <tr>
+ <td bgcolor="#FFFFFF"><img src="../c++boost.gif" alt="c++boost.gif (8819 bytes)" width="277" height="86"></td>
+ <td><a href="../index.htm"><font face="Arial" color="#FFFFFF"><big>Home</big></font></a></td>
+ <td><a href="../libs/libraries.htm"><font face="Arial" color="#FFFFFF"><big>Libraries</big></font></a></td>
+ <td><a href="../people/people.htm"><font face="Arial" color="#FFFFFF"><big>People</big></font></a></td>
+ <td><a href="faq.htm"><font face="Arial" color="#FFFFFF"><big>FAQ</big></font></a></td>
+ <td><a href="index.htm"><font face="Arial" color="#FFFFFF"><big>More</big></font></a></td>
+ </tr>
+</table>
+<h1>Boost Discussion Policy</h1>
+<p>Email discussion is the tie that binds boost members together into a community.
+If the discussion is stimulating and effective, the community thrives.&nbsp; If
+the discussion degenerates into name calling and ill will, the community withers
+and dies.</p>
+<h2>Acceptable topics</h2>
+<ul>
+ <li>Queries to determine interest in a possible library submission.</li>
+ <li>Technical discussions about a proposed or existing library, including bug
+ reports and requests for help.</li>
+ <li>Formal Reviews of proposed libraries.</li>
+ <li>Reports of user experiences with Boost libraries.</li>
+ <li>Boost administration or policies.</li>
+ <li>Compiler specific workarounds as applied to Boost libraries.</li>
+</ul>
+<p>Other topics related to boost development may be acceptable, at the discretion of moderators. If unsure, go ahead and post. The moderators
+will let you know.</p>
+<h2>Unacceptable topics</h2>
+<ul>
+ <li>Advertisements for commercial products.</li>
+ <li>Requests for help getting non-boost code to compile with your compiler.
+ Try the comp.lang.c++.moderated newsgroup instead.</li>
+ <li>Requests for help interpreting the C++ standard.&nbsp; Try the comp.std.c++
+ newsgroup instead.</li>
+</ul>
+<h2>Prohibited behavior</h2>
+<p>Prohibited behavior will not be tolerated.&nbsp; The moderators will ban
+postings by abusers.</p>
+<h3>Flame wars</h3>
+<p>Personal insults, argument for the sake of argument, and all the other
+behaviors which fall into the &quot;flame war&quot; category are
+prohibited.&nbsp; Discussions should focus on technical arguments, not the
+personality traits or motives of participants.</p>
+<h3>Third-party attacks</h3>
+<p>Attacks on third parties such as software vendors, hardware vendors, or any
+other organizations, are prohibited.&nbsp; Boost exists to unite and serve the
+entire C++ community, not to disparage the work of others.</p>
+<p>Does this mean that we ban the occasional complaint or wry remark about a
+troublesome compiler?&nbsp; No, but be wary of overdoing it.</p>
+<h3>Off-topic posts</h3>
+<p>Discussions which stray from the acceptable topics are strongly discouraged.
+While off-topic posts are often well meaning and not as individually corrosive
+as other abuses, cumulatively the distraction damages the effectiveness of
+discussion.</p>
+<h2>Culture</h2>
+<p>In addition to technical skills, Boost members value collaboration,
+acknowledgement of the help of others, and a certain level of politeness.&nbsp; Boost
+membership is very international, and ranges widely in age and other
+characteristics. Think of discussion as occurring among colleagues in a widely read forum, rather
+than among a few close friends.</p>
+<h2>Guidelines for effective discussions</h2>
+<p>Apply social engineering to prevent heated technical discussion from
+degenerating into a shouting match.</p>
+<ul>
+ <li>Questions help.&nbsp; If someone suggests something that you don't think
+ will work, then replying with a question like &quot;will that compile?&quot;
+ or &quot;won't that fail to compile, or am I missing something?&quot; is a
+ lot smoother than &quot;That's really stupid - it won't compile.&quot;&nbsp;
+ Saying &quot;that fails to compile for me, and seems to violate section
+ n.n.n of the standard&quot; would be yet another way to be firm without
+ being abrasive.</li>
+ <li>If most of the discussion has been code-free generalities, posting a bit
+ of sample code can focus people on the practical issues.</li>
+ <li>If most of the discussion has been in terms of specific code, try to talk
+ a bit about hidden assumptions and generalities that may be preventing
+ discussion closure.</li>
+ <li>Taking a time-out is often effective.&nbsp; Just say: &quot;Let me think
+ about that for a day or two.&nbsp; Let's take a time-out to digest the
+ discussion so far.&quot;</li>
+</ul>
+<p>Avoid Parkinson's Bicycle Shed.&nbsp; Parkinson described a committee formed
+to oversee design of an early nuclear power plant.&nbsp; There were three agenda
+items - when to have tea, where to put the bicycle shed, and how to
+ensure nuclear safety.&nbsp; Tea was was disposed of quickly as trivial.&nbsp;&nbsp;
+Nuclear safety was discussed for only
+an hour - it was so complex, scary, and technical that even
+among experts few felt comfortable with the issues.&nbsp; Endless days were then
+spent discussing where to put the bicycle shed (the parking lot would
+be a modern equivalent) because everyone
+understood the issues and felt comfortable discussing them.&nbsp;</p>
+<hr>
+<p>Revised <!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%d %B, %Y" startspan -->08 January, 2001<!--webbot bot="Timestamp" endspan i-checksum="38324" -->
+</p>
+
+</body>
+
+</html>
diff --git a/more/download.html b/more/download.html
new file mode 100644
index 0000000000..76a2517035
--- /dev/null
+++ b/more/download.html
@@ -0,0 +1,127 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<title>Boost Download and Installation</title>
+</head>
+
+<body bgcolor="#FFFFFF" text="#000000">
+
+<table border="1" bgcolor="#007F7F" cellpadding="2">
+ <tr>
+ <td bgcolor="#FFFFFF"><img src="../c++boost.gif" alt="c++boost.gif (8819 bytes)" width="277" height="86"></td>
+ <td><a href="../index.htm"><font face="Arial,Helvetica" color="#FFFFFF"><big>Home</big></font></a></td>
+ <td><a href="../libs/libraries.htm"><font face="Arial,Helvetica" color="#FFFFFF"><big>Libraries</big></font></a></td>
+ <td><a href="../people/people.htm"><font face="Arial,Helvetica" color="#FFFFFF"><big>People</big></font></a></td>
+ <td><a href="faq.htm"><font face="Arial,Helvetica" color="#FFFFFF"><big>FAQ</big></font></a></td>
+ <td><a href="index.htm"><font face="Arial,Helvetica" color="#FFFFFF"><big>More</big></font></a></td>
+ </tr>
+</table>
+
+<h1>Boost Download and Installation</h1>
+
+The boost libraries are intended for easy download and installation.
+However, unlike other packages, there is no global setup and
+configuration tool.
+
+<h2>Download</h2>
+The boost libraries are available in various formats. Most of the
+files are available through links from the individual library's
+documentation. Since many boost headers include other boost headers,
+installing one at a time is painful.&nbsp; Downloading all of Boost as a single archive
+file (.zip or .tar.gz)&nbsp; is a lot easier.&nbsp; CVS access is also
+available.
+
+<h3>.zip file</h3>
+
+The .zip format is widely supported by both free decoders and
+commercial compress/archive utilities. If you don't already have a
+.zip file decoder, download one from the
+<a href="http://www.info-zip.org/">Info-ZIP</a>
+web site, which supplies versions for many operating systems.
+<p>
+Text file line endings in the .zip file are as supplied by each library
+developer.&nbsp; This works fine for Windows, but not for Unix/Linux.&nbsp; The
+.tar.gz file supplies Unix/Linux friendly line endings.
+
+<ul>
+<li><a href="ftp://boost.sourceforge.net/pub/boost/release/">Latest version</a>
+</ul>
+
+
+<h3>.tar.gz file</h3>
+
+The .tar.gz format is widely supported on Unix/Linux platforms. Some
+Windows compress/archive utilities can read the format as well.&nbsp; Because
+the gzip format compresses the archive as a single file rather than compressing
+each file individually, the .tar.gz file is smaller that the .zip file.
+<p>Text file line endings in the .tar.gz file have been converted to newlines
+for ease of use on Unix/Linux platforms.</p>
+
+<ul>
+<li><a href="ftp://boost.sourceforge.net/pub/boost/release/">Latest version</a>
+</ul>
+
+<h3>CVS archive</h3>
+
+For those who have CVS installed, the libraries are also available
+from the public CVS repository. The general procedure for
+command-line clients is something like this:
+<blockquote>
+<code>
+cvs -d:pserver:anonymous@cvs.boost.sourceforge.net:/cvsroot/boost login
+</code>
+<br>
+[Hit &lt;return&gt; when it asks for a password]
+<br>
+<code>
+cvs -z3 -d:pserver:anonymous@cvs.boost.sourceforge.net:/cvsroot/boost checkout boost
+<br>
+cvs -d:pserver:anonymous@cvs.boost.sourceforge.net:/cvsroot/boost logout
+</code>
+</blockquote>
+
+Read the manual for your CVS client for further information.
+<p>
+This access is read-only; if you are a library author and wish to have
+CVS write access, please contact one of the
+<a href="mailto:boost-owner@yahoogroups.com">moderators</a>.
+
+
+<h3>WWW access to the CVS archive</h3>
+
+For access to individual files in the CVS archive, you can also use its
+<a href="http://cvs.sourceforge.net/cgi-bin/cvsweb.cgi/boost/?cvsroot=boost">WWW interface</a>.
+
+
+
+<h2>Installation</h2>
+
+Many boost libraries are implemented entirely within their header
+files. The only preparation for their use is to add the path for the
+parent directory of the boost headers sub-directory to your compiler's
+list of <code>#include</code> search directories.
+<p>
+For example, using Windows 2000, if you have unzipped release 1.20.2
+from boost_all.zip into the top level directory of your C drive, for
+Borland, GCC, and Metrowerks compilers add '-Ic:/boost_1_20_2' to the
+compiler command line, and for the Microsoft compiler add '/I
+"c:/boost_1_20_2"'. For IDE's, add 'c:/boost_1_20_2' (or whatever you
+have renamed it to) to the search list using the appropriate GUI
+dialog.
+
+<p>
+A few boost libraries are implemented by separate source files, and
+thus require compilation on your system to link properly. Boost does
+not currently have an overall "build" or "make" mechanism in place.
+Some of the individual libraries do include make and/or project files
+for various compilers, though.
+<p>
+
+<hr>
+
+Revised <!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%d %B, %Y" startspan -->14 March, 2001<!--webbot bot="Timestamp" endspan i-checksum="28773" -->
+<p>Written by&nbsp; <a href="../people/jens_maurer.htm">Jens Maurer</a>
+2001-02-11</p>
+
+</body>
+</html>
diff --git a/more/faq.htm b/more/faq.htm
new file mode 100644
index 0000000000..d15413b23b
--- /dev/null
+++ b/more/faq.htm
@@ -0,0 +1,137 @@
+<html>
+
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<title>Boost FAQ</title>
+<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
+<meta name="Microsoft Border" content="none, default">
+</head>
+
+<body bgcolor="#FFFFFF" text="#000000">
+
+<table border="1" bgcolor="#007F7F" cellpadding="2">
+ <tr>
+ <td bgcolor="#FFFFFF"><img src="../c++boost.gif" alt="c++boost.gif (8819 bytes)" WIDTH="277"
+ HEIGHT="86"></td>
+ <td><a href="../index.htm"><font face="Arial" color="#FFFFFF"><big>Home </big></font></a></td>
+ <td><a href="../libs/libraries.htm"><font face="Arial" color="#FFFFFF"><big>Libraries </big></font></a></td>
+ <td><a href="../people/people.htm"><font face="Arial" color="#FFFFFF"><big>People </big></font></a></td>
+ <td><a href="faq.htm"><font face="Arial" color="#FFFFFF"><big>FAQ </big></font></a></td>
+ <td><a href="index.htm"><font face="Arial" color="#FFFFFF"><big>More </big></font></a></td>
+ </tr>
+</table>
+
+<h1>Boost Frequently Asked Questions</h1>
+
+<p><strong>How do I download the libraries?</strong>
+&nbsp; See <a href="../libs/libraries.htm#Download">Download</a> instructions.</p>
+
+<p><b>What support is available for the libraries?</b>&nbsp; Try the <a
+href="mailto:boost@egroups.com">boost@egroups.com</a> mailing list. </p>
+
+<p><b>What do the Boost version numbers mean?&nbsp; </b>The scheme is x.y.z, where x is incremented only for massive changes, such as a reorganization of many libraries, y is incremented whenever a new library is added, and z is incremented for maintenance releases. y and z are reset to 0 if
+the value to the left changes.&nbsp;<br>
+<br>
+<b>How can the Boost libraries be used successfully for important projects?&nbsp;
+</b>Many of the Boost libraries are actively maintained and improved, so backward compatibility with prior version isn't always possible. Deal with this by freezing the version of the Boost libraries used by your project. Only upgrade at points in your project's life cycle where a bit of change will not cause problems. Individual bug fixes can always be obtained from the CVS repository. </p>
+
+<p><b>How is a library accepted for posting on the site?</b>
+See <a href="submission_process.htm">Library Submission Process</a></p>
+
+<p><b>Is there any assurance libraries actually work as claimed?</b> No. The review
+process will hopefully eliminate the most seriously flawed libraries, but a well
+constructed library with hidden defects is likely to slip through. Encouraging ordinary
+users to report their experience with a library is intended to address such concerns. </p>
+
+<p><b>How does someone submit a comment?</b>&nbsp; Send email to <a
+href="mailto:boost@egroups.com">boost@egroups.com</a>. </p>
+
+<p><strong>How does someone submit a library?</strong> See <a href="lib_guide.htm">Library
+Guidelines</a></p>
+
+<p><b>Are commercial libraries requiring a fee acceptable?</b> No. However, a library that
+a commercial enterprise makes available without fee is acceptable. If the description of
+the library makes a low-key plug for the supplier, that is acceptable as long as the
+library delivers real value and isn&#146;t just a Trojan horse for the plug.</p>
+
+<p><b>Are shareware libraries acceptable?</b> No. At least initially, only free libraries
+will be accepted.</p>
+
+<p><strong>Are open source license libraries acceptable?</strong>&nbsp; Some
+are, many are not.
+Open source licenses often require redistribution or availability of source code,
+inclusion of license document with machine-executable redistribution, give the initial
+developer rights to licensee modifications, or need a lawyer to understand.&nbsp; These
+would be immediate disqualifications for many business, commercial, and consumer
+applications. Boost aims to avoid subjecting users to hard-to-comply-with license
+terms. See <a href="lib_guide.htm##License">License requirements</a>.<br>
+<br>
+This is subject to review for a particularly important piece of software, or as the
+industry changes.</p>
+
+<p><b>Must full source code be provided?</b> Yes, these are source code libraries.</p>
+
+<p><b>What about documentation?</b> A very simple library might be accepted with only a
+well commented header file. For more substantial libraries, some form of documentation is
+certainly going to be expected.&nbsp; HTML is the preferred form.</p>
+
+<p><b>Are platform specific libraries acceptable?</b> There is a preference for portable
+libraries. Libraries will be accepted that have portable interfaces but require platform
+specific implementations, as long as the author supplies implementations for a couple of
+disparate major operating systems.</p>
+
+<p><b>Must a library do useful work? </b>No. A library meant as a teaching example or
+demonstration might not actually do any work.</p>
+
+<p><b>Who owns the libraries?</b> Presumably many authors will copyright their libraries.
+Others authors may wish to place their libraries in the public domain. The Boost.org
+policy is to only accept libraries with a clear copyright notice.&nbsp; It is up to
+potential users to decide if they find the copyright terms acceptable, and to not use
+libraries with unacceptable copyrights.</p>
+
+<p><b>Is there a formal relationship between Boost.org and the C++ Standards Committee?</b>
+&nbsp; No. The people who started Boost.org were all on the committee, but that was just
+happenstance.</p>
+
+<p><b>Will the Boost.org libraries become part of the next C++ Standard?</b>&nbsp; Some
+might, someday off in the future, but that is up to the standards committee.&nbsp; To the
+extent a library becomes &quot;existing practice&quot;, the likelihood increases that
+someone will propose it for future standardization. Submitting a library to Boost.org is
+one way to establish existing practice - as long as enough people are interested to
+download and use it!</p>
+
+<p><b>Is the web site a commercial business?</b> No. It is just some people getting together
+as a kind of cyberspace civic association. If it ever needs to incorporate, it would be as
+non-profit organization.</p>
+
+<p><b>Is there any charge for submitting libraries or reviews to Boost.org?</b> No. Unlike
+the standards committees, you don&#146;t have to pay to volunteer!</p>
+
+<p><b>Will the site include material beyond libraries?</b> The main focus is on libraries,
+but if people contribute occasional articles or other material to make the site more
+interesting, that could be a nice fit.</p>
+
+<p><b>Why isn't there a separate boost mailing list for my favorite
+library?&nbsp;</b> One of the reasons for boost's success has been the cross-pollination of ideas between diverse library
+projects and the occasional look into other threads by otherwise uninterested parties. The more people participate, the less they tend to be annoyed by
+"noise".</p>
+
+<p><b>How can I cope with the large volume of boost mailing list messages?</b>&nbsp;
+One approach is to use the eGroups digest option; that cuts the email blizzard
+down to about three (long) messages per day, so you can glance over the subjects
+summary at the top and quickly read what you think is important.&nbsp;The
+eGroups &quot;no mail/web only&quot; option is best if you just occasionally
+want to look at messages.</p>
+
+<p>Yet another approach is to use your email program's capabilities to filter messages and automatically
+transfer them into several boost folders.&nbsp;Then only read the folders you
+care about. Boost list posters are
+encouraged to include keywords in the subject like &quot;thread&quot;,
+&quot;review&quot;, and &quot;CVS&quot; to aid message filtering.</p>
+
+<hr>
+
+<p>Revised <!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%d %B, %Y" startspan -->08 March, 2001<!--webbot bot="Timestamp" endspan i-checksum="28780" -->
+</p>
+</body>
+</html>
diff --git a/more/feature_model_diagrams.htm b/more/feature_model_diagrams.htm
new file mode 100644
index 0000000000..ef3afd6c4c
--- /dev/null
+++ b/more/feature_model_diagrams.htm
@@ -0,0 +1,104 @@
+<html>
+
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
+<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
+<meta name="ProgId" content="FrontPage.Editor.Document">
+<title>Feature Model Diagrams</title>
+</head>
+
+<body bgcolor="#FFFFFF" text="#000000">
+
+<p><img border="0" src="../c++boost.gif" width="277" height="86"></p>
+<h1>Feature Model Diagrams in text and HTML</h1>
+<p>By <a href="../people/beman_dawes.html">Beman Dawes</a></p>
+<h2>Introduction</h2>
+<p>In their seminal book, Generative Programming, Czarnecki and Eisenecker (<a href="#Generative Programming">C&amp;E</a>)
+describe how to build feature models [C&amp;E 4.4] consisting of a feature
+diagram plus semantic, rationale, and other attributes.&nbsp; Feature models are
+then used to drive design cycles which eventually lead to manual or automatic
+assembly of configurations.</p>
+<p>Feature models provide a language to describe the library variability that is
+often such an issue in boost.org discussions. The Whorf hypothesis that
+&quot;Language shapes the way we think, and determines what we can think
+about&quot; seems to apply.&nbsp; In discussion of library variability issues,
+we have been crippled by lack of a good language. With feature models we now
+have a language to carry on the dialog.</p>
+<p>The graphical feature diagrams presented by C&amp;E are not in a suitable
+form for the email discussions boost.org depends upon. The hierarchical nature
+of feature diagrams can be represented by a simple text-based feature diagram
+language.&nbsp; A feature model can also take advantage of the hyperlinks
+inherent in HTML.</p>
+<h2><a name="Grammar">Grammar</a></h2>
+<p>The grammar for the feature diagram language is expressed in Extended
+Bakus-Naur Form; ::= represents productions, [...] represents options, {...}
+represents zero or more instances, and represents | alternatives.</p>
+<blockquote>
+ <pre>feature-model ::= concept-name details { feature }</pre>
+ <pre>feature ::= feature-name [details]</pre>
+ <pre>details ::= &quot;(&quot; feature-list &quot;)&quot; // required features
+ | &quot;[&quot; feature-list &quot;]&quot; // optional features</pre>
+ <pre>feature-list ::= element { &quot;|&quot; element } // one only
+ | element { &quot;+&quot; element } // one or more
+ | element { &quot;,&quot; element } // all
+ // [a+b] equivalent to [a,b]</pre>
+ <pre>element ::= feature
+ | details</pre>
+ <pre>concept-name ::= name</pre>
+ <pre>feature-name ::= name</pre>
+</blockquote>
+<p>The usual lexical conventions apply. Names are case-insensitive and consist
+of a leading letter, followed by letters, digits, underscores or hyphens, with
+no spaces allowed.</p>
+<p>At least one instance of each name should be hyperlinked to the corresponding
+<a href="#Feature Descriptions">Feature Description</a>.</p>
+<p>While the grammar is intended for written communication between people, it
+may also be trivially machine parsed for use by automatic tools.</p>
+<h2><a name="Feature Descriptions">Feature Description</a></h2>
+<p>Descriptive information is associated with each concept or feature. According
+to [C&amp;E 4.4.2] this includes:</p>
+<ul>
+ <li>Semantic descriptions.</li>
+ <li>Rationale.</li>
+ <li>Stakeholders and client programs.</li>
+ <li>Exemplar systems.</li>
+ <li>Constraints and default dependency rules.</li>
+ <li>Availability sites, binding sites, and binding mode.</li>
+ <li>Open/Closed attribute.</li>
+</ul>
+<h2>What is a Feature?</h2>
+<p>A feature [C&amp;E 4.9.1] is &quot;anything users or client programs might
+want to control about a concept.&nbsp; Thus, during feature modeling, we
+document no only functional features ... but also implementation features, ...,
+various optimizations, alternative implementation techniques, and so on.&quot;</p>
+<h2>Example</h2>
+<blockquote>
+ <pre>special-container ( organization,
+ performance,
+ interface ) // all required</pre>
+ <pre>organization [ ordered + indexed ] // zero or more (4 configurations)</pre>
+ <pre>indexed [ hash-function ] // zero or one (2 configurations)</pre>
+ <pre>performance ( fast | small | balanced ) // exactly one (3 configurations)</pre>
+ <pre>interface ( STL-style + cursor-style ) // one or more (3 configurations)</pre>
+</blockquote>
+<p>There should be feature descriptions for <code>some-container, organization,
+ordered, indexed, hash-function, performance, fast, small, balanced, interface,
+STL-style, and cursor-style</code>.</p>
+<p>The number of possible configurations is&nbsp; (2 + 2*2) * 3 * 3 = 54,
+assuming no constraints.</p>
+<p>There are equivalent representations. For example:</p>
+<blockquote>
+ <pre>special-container ( organization[ ordered+indexed[ hash-function ]],
+ performance( fast|small|balanced ),
+ interface( STL-style+cursor-style ) )</pre>
+</blockquote>
+<h2>References</h2>
+<p>Krzysztof Czarnecki and Ulrich W. Eisenecker, <a name="Generative Programming" href="http://www.generative-programming.org">Generative
+Programming</a>, Addison-Wesley, 2000, ISBN 0-210-30977-7</p>
+<hr>
+<p>Revised <!--webbot bot="Timestamp" s-type="EDITED" s-format="%d %B %Y" startspan -->28 September 2000<!--webbot bot="Timestamp" endspan i-checksum="39503" --></p>
+<p>© Copyright Beman Dawes, 2000</p>
+
+</body>
+
+</html>
diff --git a/more/formal_review_process.htm b/more/formal_review_process.htm
new file mode 100644
index 0000000000..1f1271d22d
--- /dev/null
+++ b/more/formal_review_process.htm
@@ -0,0 +1,115 @@
+<html>
+
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
+<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
+<meta name="ProgId" content="FrontPage.Editor.Document">
+<title>Boost Formal Review Process</title>
+</head>
+
+<body bgcolor="#FFFFFF" text="#000000">
+
+<table border="1" bgcolor="#007F7F" cellpadding="2">
+ <tr>
+ <td bgcolor="#FFFFFF"><img src="../c++boost.gif" alt="c++boost.gif (8819 bytes)" width="277" height="86"></td>
+ <td><a href="../index.htm"><font face="Arial" color="#FFFFFF"><big>Home</big></font></a></td>
+ <td><a href="../libs/libraries.htm"><font face="Arial" color="#FFFFFF"><big>Libraries</big></font></a></td>
+ <td><a href="../people/people.htm"><font face="Arial" color="#FFFFFF"><big>People</big></font></a></td>
+ <td><a href="faq.htm"><font face="Arial" color="#FFFFFF"><big>FAQ</big></font></a></td>
+ <td><a href="index.htm"><font face="Arial" color="#FFFFFF"><big>More</big></font></a></td>
+ </tr>
+</table>
+<h1>Boost Formal Review Process</h1>
+<p>The Formal Review process determines if a proposed library should be accepted
+as a Boost library.</p>
+<p>The final &quot;accept&quot; or &quot;reject&quot; decision is made by the <a href="#Review Manager">
+Review Manager</a>, based on review comments received from boost mailing list
+members.</p>
+<p>Reviews are scheduled so that:</p>
+<ul>
+ <li>Each library gets review time proportional to its size, complexity, and
+ importance.</li>
+ <li>Only a small number of libraries are under active review at any one time.</li>
+ <li>Members know ahead of time when a particular library will be under active
+ review.&nbsp;</li>
+</ul>
+<h2>Comments</h2>
+<p> Boost mailing list members are encouraged to submit Formal Review
+comments:</p>
+<blockquote>
+ <ul>
+ <li>Publicly on the mailing list.</li>
+ <li>Privately to the Review Manager. (See Formal Review Status page )</li>
+ <li>Privately to the library submitter.</li>
+ </ul>
+</blockquote>
+<p>Private comments to a library submitter may be helpful to her or him, but
+won't help the Review Manager reach a decision, so the other forms are
+preferred.</p>
+<h2>Preparing review comments</h2>
+<p>Comments may be brief or lengthy, but basically the Review Manager needs your
+answers to several questions.&nbsp; If you identify problems along the way,
+please note if they are minor, serious, or showstoppers.</p>
+<ul>
+ <li>What is your evaluation of the design?<br>
+ </li>
+ <li>What is your evaluation of the implementation?<br>
+ </li>
+ <li>What is your evaluation of the documentation?<br>
+ </li>
+ <li>What is your evaluation of the potential usefulness of the library?<br>
+ </li>
+ <li>Did you try to use the library?&nbsp; With what compiler?&nbsp; Did you
+ have any problems?<br>
+ </li>
+ <li>How much effort did you put into your evaluation? A glance? A quick
+ reading? In-depth study?<br>
+ </li>
+ <li>Are you knowledgeable about the problem domain?<br>
+ </li>
+ <li>Finally, do you think the library should be accepted as a Boost
+ library?&nbsp; Be sure to say this explicitly so that your other comments
+ don't obscure your overall opinion.</li>
+</ul>
+<h2>Results</h2>
+<p>At the conclusion of the comment period, the Review Manager will post a
+message to the mailing list saying if the library has been accepted or
+rejected.&nbsp; A rationale should be provided, but its extent is up to the
+Review Manager.</p>
+<h2>Notes for <a name="Review Manager"> Review Manager</a>s</h2>
+<p>Before a library can be scheduled for formal review, an active boost member not
+connected with the library submission must volunteer to be the &quot;Review
+Manager&quot; for the library.</p>
+<p>The review manager:</p>
+<ul>
+ <li>Sets the schedule, after discussion with the boost webmaster, currently
+ Beman Dawes.&nbsp;</li>
+ <li>Posts a notice of the review schedule.</li>
+ <li>Urges people to do reviews if they aren't forthcoming.</li>
+ <li>Follows review discussions regarding the library, moderating or answering
+ questions as needed.</li>
+ <li>Decides if
+there is consensus to accept the library, and if there are any conditions
+ attached.</li>
+ <li>Posts a message informing members of the review results.</li>
+</ul>
+<p>In other words, it is the Review Manager's responsibility to make sure the
+review process stays on track.</p>
+<h2>Notes for Library Authors</h2>
+<p>A proposed library should remain stable during the review period; it will just
+confuse and irritate reviewers if there are numerous changes.&nbsp; It
+is, however, useful to upload fixes for serious bugs right away, particularly
+those which prevent reviewers from fully evaluating the library.&nbsp; Post a
+notice of such fixes on the mailing list.</p>
+<p>Library improvements suggested by reviewers should be held until after the
+completion of review period. Such changes can then be incorporated in the <a href="submission_process.htm#Final">final
+submission file</a> sent to the webmaster for posting.&nbsp; If the suggested
+changes might affect reviewer's judgments,&nbsp; post a notice of the pending
+change on the mailing list.</p>
+<hr>
+<p>Revised <!--webbot bot="Timestamp" s-type="EDITED" s-format="%d %B, %Y" startspan -->06 February, 2001<!--webbot bot="Timestamp" endspan i-checksum="40406" --></p>
+<p>&nbsp;</p>
+
+</body>
+
+</html>
diff --git a/more/generic_programming.html b/more/generic_programming.html
new file mode 100644
index 0000000000..9cd5d80342
--- /dev/null
+++ b/more/generic_programming.html
@@ -0,0 +1,448 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2//EN">
+
+ <meta name="generator" content="HTML Tidy, see www.w3.org">
+ <meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
+ <meta name="GENERATOR" content="Microsoft FrontPage 4.0">
+ <meta name="ProgId" content="FrontPage.Editor.Document">
+
+ <title>Generic Programming Techniques</title>
+
+ <img src="../c++boost.gif" alt="c++boost.gif (8819 bytes)" align="center"
+ width="277" height="86">
+
+ <body bgcolor="#FFFFFF" text="#000000">
+
+ <h1>Generic Programming Techniques</h1>
+
+ <p>This is an incomplete survey of some of the generic programming
+ techniques used in the <a href="../index.htm">boost</a> libraries.
+
+ <h2>Table of Contents</h2>
+
+ <ul>
+ <li><a href="#introduction">Introduction</a>
+
+ <li><a href="#concept">The Anatomy of a Concept</a>
+
+ <li><a href="#traits">Traits</a>
+
+ <li><a href="#tag_dispatching">Tag Dispatching</a>
+
+ <li><a href="#adaptors">Adaptors</a>
+
+ <li><a href="#type_generator">Type Generators</a>
+
+ <li><a href="#object_generator">Object Generators</a>
+
+ <li><a href="#policy">Policy Classes</a>
+ </ul>
+
+ <h2><a name="introduction">Introduction</a></h2>
+
+ <p>Generic programming is about generalizing software components so that
+ they can be easily reused in a wide variety of situations. In C++, class
+ and function templates are particularly effective mechanisms for generic
+ programming because they make the generalization possible without
+ sacrificing efficiency.
+
+ <p>As a simple example of generic programming, we will look at how one
+ might generalize the <tt>memcpy()</tt> function of the C standard library.
+ An implementation of <tt>memcpy()</tt> might look like the following:
+ <br>
+ <br>
+
+ <blockquote>
+<pre>
+void* memcpy(void* region1, const void* region2, size_t n)
+{
+ const char* first = (const char*)region2;
+ const char* last = ((const char*)region2) + n;
+ char* result = (char*)region1;
+ while (first != last)
+ *result++ = *first++;
+ return result;
+}
+</pre>
+ </blockquote>
+ The <tt>memcpy()</tt> function is already generalized to some extent by the
+ use of <tt>void*</tt> so that the function can be used to copy arrays of
+ different kinds of data. But what if the data we would like to copy is not
+ in an array? Perhaps it is in a linked list. Can we generalize the notion
+ of copy to any sequence of elements? Looking at the body of
+ <tt>memcpy()</tt>, the function's <b><i>minimal requirements</i></b> are
+ that it needs to to <i>traverse</i> through the sequence using some sort of
+ pointer, <i>access</i> elements pointed to, <i>write</i> the elements to
+ the destination, and <i>compare</i> pointers to know when to stop. The C++
+ standard library groups requirements such as these into
+ <b><i>concepts</i></b>, in this case the <a href=
+ "http://www.sgi.com/tech/stl/InputIterator.html">Input Iterator</a> concept
+ (for <tt>region2</tt>) and the <a href=
+ "http://www.sgi.com/tech/stl/OutputIterator.html">Output Iterator</a>
+ concept (for <tt>region1</tt>).
+
+ <p>If we rewrite the <tt>memcpy()</tt> as a function template, and use the
+ <a href="http://www.sgi.com/tech/stl/InputIterator.html">Input Iterator</a>
+ and <a href="http://www.sgi.com/tech/stl/OutputIterator.html">Output
+ Iterator</a> concepts to describe the requirements on the template
+ parameters, we can implement a highly reusable <tt>copy()</tt> function in
+ the following way:
+ <br>
+ <br>
+
+ <blockquote>
+<pre>
+template &lt;typename InputIterator, typename OutputIterator&gt;
+OutputIterator
+copy(InputIterator first, InputIterator last, OutputIterator result)
+{
+ while (first != last)
+ *result++ = *first++;
+ return result;
+}
+</pre>
+ </blockquote>
+
+ <p>Using the generic <tt>copy()</tt> function, we can now copy elements
+ from any kind of sequence, including a linked list that exports iterators
+ such as <tt>std::<a href=
+ "http://www.sgi.com/tech/stl/List.html">list</a></tt>.
+ <br>
+ <br>
+
+ <blockquote>
+<pre>
+#include &lt;list&gt;
+#include &lt;vector&gt;
+#include &lt;iostream&gt;
+
+int main()
+{
+ const int N = 3;
+ std::vector&lt;int&gt; region1(N);
+ std::list&lt;int&gt; region2;
+
+ region2.push_back(1);
+ region2.push_back(0);
+ region2.push_back(3);
+
+ std::copy(region2.begin(), region2.end(), region1.begin());
+
+ for (int i = 0; i &lt; N; ++i)
+ std::cout &lt;&lt; region1[i] &lt;&lt; " ";
+ std::cout &lt;&lt; std::endl;
+}
+</pre>
+ </blockquote>
+
+ <h2><a name="concept">Anatomy of a Concept</a></h2>
+ A <b><i>concept</i></b> is a set requirements, where the requirements
+ consist of valid expressions, associated types, invariants, and complexity
+ guarantees. A type that satisfies the set of requirements is said to
+ <b><i>model</i></b> the concept. A concept can extend the requirements of
+ another concept, which is called <b><i>refinement</i></b>.
+
+ <ul>
+ <li><a name="valid_expression"><b>Valid Expressions</b></a> are C++
+ expressions which must compile successfully for the objects involved in
+ the expression to be considered <i>models</i> of the concept.
+
+ <li><a name="associated_type"><b>Associated Types</b></a> are types that
+ are related to the modeling type in that they participate in one or more
+ of the valid expressions. Typically associated types can be accessed
+ either through typedefs nested within a class definition for the modeling
+ type, or they are accessed through a <a href="#traits">traits class</a>.
+
+ <li><b>Invariants</b> are run-time characteristics of the objects that
+ must always be true, that is, the functions involving the objects must
+ preserve these characteristics. The invariants often take the form of
+ pre-conditions and post-conditions.
+
+ <li><b>Complexity Guarantees</b> are maximum limits on how long the
+ execution of one of the valid expressions will take, or how much of
+ various resources its computation will use.
+ </ul>
+
+ <p>The concepts used in the C++ Standard Library are documented at the <a
+ href="http://www.sgi.com/tech/stl/table_of_contents.html">SGI STL site</a>.
+
+ <h2><a name="traits">Traits</a></h2>
+
+ <p>A traits class provides a way of associating information with a
+ compile-time entity (a type, integral constant, or address). For example,
+ the class template <tt><a href=
+ "http://www.sgi.com/tech/stl/iterator_traits.html">std::iterator_traits&lt;T&gt;</a></tt>
+ looks something like this:
+
+ <blockquote>
+<pre>
+template &lt;class Iterator&gt;
+struct iterator_traits {
+ typedef ... iterator_category;
+ typedef ... value_type;
+ typedef ... difference_type;
+ typedef ... pointer;
+ typedef ... reference;
+};
+</pre>
+ </blockquote>
+ The traits' <tt>value_type</tt> gives generic code the type which the
+ iterator is "pointing at", while the <tt>iterator_category</tt> can be used
+ to select more efficient algorithms depending on the iterator's
+ capabilities.
+
+ <p>A key feature of traits templates is that they're <i>non-intrusive</i>:
+ they allow us to associate information with arbitrary types, including
+ built-in types and types defined in third-party libraries, Normally, traits
+ are specified for a particular type by (partially) specializing the traits
+ template.
+
+ <p>For an in-depth description of <tt>std::iterator_traits</tt>, see <a
+ href="http://www.sgi.com/tech/stl/iterator_traits.html">this page</a>
+ provided by SGI. Another very different expression of the traits idiom in
+ the standard is <tt>std::numeric_limits&lt;T&gt;</tt> which provides
+ constants describing the range and capabilities of numeric types.
+
+ <h2><a name="tag_dispatching">Tag Dispatching</a></h2>
+
+ <p>A technique that often goes hand in hand with traits classes is tag
+ dispatching, which is a way of using function overloading to dispatch based
+ on properties of a type. A good example of this is the implementation of the
+ <a href=
+ "http://www.sgi.com/tech/stl/advance.html"><tt>std::advance()</tt></a>
+ function in the C++ Standard Library, which increments an iterator
+ <tt>n</tt> times. Depending on the kind of iterator, there are different
+ optimizations that can be applied in the implementation. If the iterator is
+ <a href="http://www.sgi.com/tech/stl/RandomAccessIterator.html">random
+ access</a> (can jump forward and backward arbitrary distances), then the
+ <tt>advance()</tt> function can simply be implemented with <tt>i += n</tt>,
+ and is very efficient: constant time. Other iterators must be
+ <tt>advance</tt>d in steps, making the operation linear in n. If the
+ iterator is <a href=
+ "http://www.sgi.com/tech/stl/BidirectionalIterator.html">bidirectional</a>,
+ then it makes sense for <tt>n</tt> to be negative, so we must decide whether
+ to increment or decrement the iterator.
+
+ <p>The relation between tag dispatching and traits classes is that the
+ property used for dispatching (in this case the <tt>iterator_category</tt>)
+ is often accessed through a traits class. The main <tt>advance()</tt> function
+ uses the <a href=
+ "http://www.sgi.com/tech/stl/iterator_traits.html"><tt>iterator_traits</tt></a>
+ class to get the <tt>iterator_category</tt>. It then makes a call the the
+ overloaded <tt>advance_dispatch()</tt> function. The appropriate
+ <tt>advance_dispatch()</tt> is selected by the compiler based on whatever
+ type the <tt>iterator_category</tt> resolves to, either <a href=
+ "http://www.sgi.com/tech/stl/input_iterator_tag.html"><tt>input_iterator_tag</tt></a>,
+ <a href=
+ "http://www.sgi.com/tech/stl/bidirectional_iterator_tag.html"><tt>bidirectional_iterator_tag</tt></a>,
+ or <a href=
+ "http://www.sgi.com/tech/stl/random_access_iterator_tag.html"><tt>random_access_iterator_tag</tt></a>.
+ A <b><i>tag</i></b> is simply a class whose only purpose is to convey some
+ property for use in tag dispatching and similar techniques. Refer to <a
+ href="http://www.sgi.com/tech/stl/iterator_tags.html">this page</a> for a
+ more detailed description of iterator tags.
+
+ <blockquote>
+<pre>
+namespace std {
+ struct input_iterator_tag { };
+ struct bidirectional_iterator_tag { };
+ struct random_access_iterator_tag { };
+
+ namespace detail {
+ template &lt;class InputIterator, class Distance&gt;
+ void advance_dispatch(InputIterator&amp; i, Distance n, <b>input_iterator_tag</b>) {
+ while (n--) ++i;
+ }
+
+ template &lt;class BidirectionalIterator, class Distance&gt;
+ void advance_dispatch(BidirectionalIterator&amp; i, Distance n,
+ <b>bidirectional_iterator_tag</b>) {
+ if (n &gt;= 0)
+ while (n--) ++i;
+ else
+ while (n++) --i;
+ }
+
+ template &lt;class RandomAccessIterator, class Distance&gt;
+ void advance_dispatch(RandomAccessIterator&amp; i, Distance n,
+ <b>random_access_iterator_tag</b>) {
+ i += n;
+ }
+ }
+
+ template &lt;class InputIterator, class Distance&gt;
+ void advance(InputIterator&amp; i, Distance n) {
+ typename <b>iterator_traits&lt;InputIterator&gt;::iterator_category</b> category;
+ detail::advance_dispatch(i, n, <b>category</b>);
+ }
+}
+</pre>
+ </blockquote>
+
+ <h2><a name="adaptors">Adaptors</a></h2>
+
+ <p>An <i>adaptor</i> is a class template which builds on another type or
+ types to provide a new interface or behavioral variant. Examples of
+ standard adaptors are <a href=
+ "http://www.sgi.com/tech/stl/ReverseIterator.html">std::reverse_iterator</a>,
+ which adapts an iterator type by reversing its motion upon
+ increment/decrement, and <a href=
+ "http://www.sgi.com/tech/stl/stack.html">std::stack</a>, which adapts a
+ container to provide a simple stack interface.
+
+ <p>A more comprehensive review of the adaptors in the standard can be found
+ <a href=
+ "http://www.cs.rpi.edu/~wiseb/xrds/ovp2-3b.html#SECTION00015000000000000000">
+ here</a>.
+
+ <h2><a name="type_generator">Type Generators</a></h2>
+
+ <p>A <i>type generator</i> is a template whose only purpose is to
+ synthesize a new type or types based on its template argument(s)<a href=
+ "#1">[1]</a>. The generated type is usually expressed as a nested typedef
+ named, appropriately <tt>type</tt>. A type generator is usually used to
+ consolidate a complicated type expression into a simple one, as in
+ <tt>boost::<a href=
+ "../libs/utility/filter_iterator.htm">filter_iterator_generator</a></tt>,
+ which looks something like this:
+
+ <blockquote>
+<pre>
+template &lt;class Predicate, class Iterator,
+ class Value = <i>complicated default</i>,
+ class Reference = <i>complicated default</i>,
+ class Pointer = <i>complicated default</i>,
+ class Category = <i>complicated default</i>,
+ class Distance = <i>complicated default</i>
+ &gt;
+struct filter_iterator_generator {
+ typedef iterator_adaptor&lt;
+ Iterator,filter_iterator_policies&lt;Predicate,Iterator&gt;,
+ Value,Reference,Pointer,Category,Distance&gt; <b>type</b>;
+};
+</pre>
+ </blockquote>
+
+ <p>Now, that's complicated, but producing an adapted filter iterator is
+ much easier. You can usually just write:
+
+ <blockquote>
+<pre>
+boost::filter_iterator_generator&lt;my_predicate,my_base_iterator&gt;::type
+</pre>
+ </blockquote>
+
+ <h2><a name="object_generator">Object Generators</a></h2>
+
+ <p>An <i>object generator</i> is a function template whose only purpose is
+ to construct a new object out of its arguments. Think of it as a kind of
+ generic constructor. An object generator may be more useful than a plain
+ constructor when the exact type to be generated is difficult or impossible
+ to express and the result of the generator can be passed directly to a
+ function rather than stored in a variable. Most Boost object generators are
+ named with the prefix "<tt>make_</tt>", after <tt>std::<a href=
+ "http://www.sgi.com/tech/stl/pair.html">make_pair</a>(const T&amp;, const U&amp;)</tt>.
+
+ <p>For example, given:
+
+ <blockquote>
+<pre>
+struct widget {
+ void tweak(int);
+};
+std::vector&lt;widget *&gt; widget_ptrs;
+</pre>
+ </blockquote>
+ By chaining two standard object generators, <tt>std::<a href=
+ "http://www.dinkumware.com/htm_cpl/functio2.html#bind2nd">bind2nd</a>()</tt>
+ and <tt>std::<a href=
+ "http://www.dinkumware.com/htm_cpl/functio2.html#mem_fun">mem_fun</a>()</tt>,
+ we can easily tweak all widgets:
+
+ <blockquote>
+<pre>
+void tweak_all_widgets1(int arg)
+{
+ for_each(widget_ptrs.begin(), widget_ptrs.end(),
+ <b>bind2nd</b>(std::<b>mem_fun</b>(&amp;widget::tweak), arg));
+}
+</pre>
+ </blockquote>
+
+ <p>Without using object generators the example above would look like this:
+
+ <blockquote>
+<pre>
+void tweak_all_widgets2(int arg)
+{
+ for_each(struct_ptrs.begin(), struct_ptrs.end(),
+ <b>std::binder2nd&lt;std::mem_fun1_t&lt;void, widget, int&gt; &gt;</b>(
+ std::<b>mem_fun1_t&lt;void, widget, int&gt;</b>(&amp;widget::tweak), arg));
+}
+</pre>
+ </blockquote>
+
+ <p>As expressions get more complicated the need to reduce the verbosity of
+ type specification gets more compelling.
+
+ <h2><a name="policy">Policy Classes</a></h2>
+
+ <p>A policy class is a template parameter used to transmit behavior. An
+ example from the standard library is <tt>std::<a href=
+ "http://www.dinkumware.com/htm_cpl/memory.html#allocator">allocator</a></tt>,
+ which supplies memory management behaviors to standard <a href=
+ "http://www.sgi.com/tech/stl/Container.html">containers</a>.
+
+ <p>Policy classes have been explored in detail by <a href=
+ "mailto:andrewalex@hotmail.com">Andrei Alexandrescu</a> in <a href=
+ "http://www.cs.ualberta.ca/~hoover/cmput401/XP-Notes/xp-conf/Papers/7_3_Alexandrescu.pdf">
+ this paper</a>. He writes:
+
+ <blockquote>
+ <p>Policy classes are implementations of punctual design choices. They
+ are inherited from, or contained within, other classes. They provide
+ different strategies under the same syntactic interface. A class using
+ policies is templated having one template parameter for each policy it
+ uses. This allows the user to select the policies needed.
+
+ <p>The power of policy classes comes from their ability to combine
+ freely. By combining several policy classes in a template class with
+ multiple parameters, one achieves combinatorial behaviors with a linear
+ amount of code.
+ </blockquote>
+
+ <p>Andrei's description of policy classes describe their power as being
+ derived from their granularity and orthogonality. Boost has probably
+ diluted the distinction in the <a href=
+ "../libs/utility/iterator_adaptors.htm">Iterator Adaptors</a> library,
+ where we transmit all of an adapted iterator's behavior in a single policy
+ class. There is precedent for this, however: <tt><a href=
+ "http://www.dinkumware.com/htm_cpl/string2.html#char_traits">std::char_traits</a></tt>,
+ despite its name, acts as a policies class that determines the behaviors of
+ <a href=
+ "http://www.dinkumware.com/htm_cpl/string2.html#basic_string">std::basic_string</a>.
+
+ <h2>Notes</h2>
+ <a name="1">[1]</a> Type generators are a workaround for the lack of
+ ``templated typedefs'' in C++.
+ <hr>
+
+ <p>Revised
+ <!--webbot bot="Timestamp" s-type="EDITED" s-format="%d %b %Y" startspan -->14 Mar 2001<!--webbot bot="Timestamp" endspan i-checksum="14885" -->
+
+
+ <p>&copy; Copyright David Abrahams 2001. Permission to copy, use, modify,
+ sell and distribute this document is granted provided this copyright notice
+ appears in all copies. This document is provided "as is" without express or
+ implied warranty, and with no claim as to its suitability for any purpose.
+ <!-- LocalWords: HTML html charset gif alt htm struct SGI namespace std libs
+ -->
+ <!-- LocalWords: InputIterator BidirectionalIterator RandomAccessIterator pdf
+ -->
+ <!-- LocalWords: typename Alexandrescu templated Andrei's Abrahams memcpy int
+ -->
+
+ <!-- LocalWords: const OutputIterator iostream pre cpl
+ -->
+
+ </body>
diff --git a/more/header.htm b/more/header.htm
new file mode 100644
index 0000000000..6fdfbbfeba
--- /dev/null
+++ b/more/header.htm
@@ -0,0 +1,93 @@
+<html>
+
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<title>Boost Header policy</title>
+<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
+<meta name="ProgId" content="FrontPage.Editor.Document">
+<meta name="Microsoft Border" content="none, default">
+</head>
+
+<body bgcolor="#FFFFFF" text="#000000">
+
+<table border="1" bgcolor="#007F7F" cellpadding="2">
+ <tr>
+ <td bgcolor="#FFFFFF"><img src="../c++boost.gif" alt="c++boost.gif (8819 bytes)" width="277" height="86"></td>
+ <td><a href="../index.htm"><font face="Arial" color="#FFFFFF"><big>Home</big></font></a></td>
+ <td><a href="../libs/libraries.htm"><font face="Arial" color="#FFFFFF"><big>Libraries</big></font></a></td>
+ <td><a href="../people/people.htm"><font face="Arial" color="#FFFFFF"><big>People</big></font></a></td>
+ <td><a href="faq.htm"><font face="Arial" color="#FFFFFF"><big>FAQ</big></font></a></td>
+ <td><a href="index.htm"><font face="Arial" color="#FFFFFF"><big>More</big></font></a></td>
+ </tr>
+</table>
+<h1>Boost Header Policy</h1>
+<p>Header files are the place where a library comes into contact with user code
+and other libraries.&nbsp; To co-exist peacefully and productively, headers must
+be &quot;good neighbors&quot;.</p>
+<p>Here are the standards for namespace boost headers.&nbsp;&nbsp;&nbsp; Many of
+these are also reasonable guidelines for general use.
+<ul>
+ <li>Headers should have a .hpp (lowercase) filename extension.&nbsp;</li>
+ <li>Wrap the header in #ifndef guards so that multiple inclusion is
+ benign.&nbsp; Use a naming convention that minimizes the chance of clashes
+ with macro names from other's code.&nbsp; The <a href="#Sample header">sample
+ header</a> uses the Boost convention of all uppercase letters, with the
+ header name prefixed by the namespace name, and suffixed with HPP, separated
+ by underscores.</li>
+ <li>Wrap the header contents in a namespace to prevent global namespace
+ pollution. The namespace approach to pollution control is strongly preferred
+ to older approaches such as adding funny prefixes to global names.&nbsp;
+ Libraries which are designed to work well with other Boost libraries should
+ be placed namespace <tt>boost</tt>.</li>
+ <li>Place the header file in a sub-directory to prevent conflict with
+ identically named header files in other libraries.&nbsp; The parent
+ directory is added to the compiler's include search path.&nbsp; Then both
+ your code and user code specifies the sub-directory in <tt>#include</tt>
+ directives.&nbsp; Thus the header <a href="#Sample header">sample header</a>&nbsp;
+ would be included by <tt>#include &lt;boost/furball.hpp&gt;</tt></li>
+ <li>The preferred ordering for class definitions is public members, protected
+ members, and finally private members.</li>
+ <li>Include the boost/config.hpp <a href="../libs/config/index.htm">configuration
+ header</a> if there is a need to deal with compiler or platform
+ configuration issues.</li>
+</ul>
+<h2><a name="Sample header"></a>Sample Header</h2>
+<pre><tt>//&nbsp; Boost general library furball.hpp header file&nbsp; ---------------------------//
+
+//&nbsp; (C) Copyright Your Name 1998. Permission to copy, use, modify, sell and
+//&nbsp; distribute this software is granted provided this copyright notice appears
+//&nbsp; in all copies. This software is provided &quot;as is&quot; without express or implied
+//&nbsp; warranty, and with no claim as to its suitability for any purpose.
+
+//&nbsp; See http://www.boost.org for updates, documentation, and revision history.
+
+#ifndef BOOST_FURBALL_HPP
+#define BOOST_FURBALL_HPP
+
+namespace boost {
+
+//&nbsp; Furball class declaration&nbsp; -----------------------------------------------//
+
+&nbsp; class furball
+ {
+ public:
+&nbsp; void throw_up();
+ private:
+ int whatever;
+&nbsp;&nbsp;};&nbsp; // furball
+
+} // namespace
+
+#endif&nbsp; // BOOST_FURBALL_HPP</tt></pre>
+<h2>Coding Style</h2>
+<p>The alert reader will have noticed that the <a href="#Sample header">sample
+header</a> employs a certain coding style for indentation, positioning braces,
+commenting ending braces, and similar formatting issues.&nbsp; These stylistic
+issues are viewed as personal preferences and are not part of the Boost Header
+Policy.</p>
+<hr>
+<p>Revised <!--webbot bot="Timestamp" s-type="EDITED" s-format="%d %B, %Y" startspan -->06 February, 2001<!--webbot bot="Timestamp" endspan i-checksum="40406" --></p>
+
+</body>
+
+</html>
diff --git a/more/imp_vars.htm b/more/imp_vars.htm
new file mode 100644
index 0000000000..2829c13b00
--- /dev/null
+++ b/more/imp_vars.htm
@@ -0,0 +1,201 @@
+<html>
+
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
+<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
+<meta name="ProgId" content="FrontPage.Editor.Document">
+<title>Boost Implementation Variations</title>
+</head>
+
+<body link="#0000ff" vlink="#800080" bgcolor="#FFFFFF" text="#000000">
+
+<table border="1" bgcolor="#007F7F" cellpadding="2">
+ <tr>
+ <td bgcolor="#FFFFFF"><img src="../c++boost.gif" alt="c++boost.gif (8819 bytes)" width="277" height="86"></td>
+ <td><a href="../index.htm"><font face="Arial" color="#FFFFFF"><big>Home</big></font></a></td>
+ <td><a href="../libs/libraries.htm"><font face="Arial" color="#FFFFFF"><big>Libraries</big></font></a></td>
+ <td><a href="../people/people.htm"><font face="Arial" color="#FFFFFF"><big>People</big></font></a></td>
+ <td><a href="faq.htm"><font face="Arial" color="#FFFFFF"><big>FAQ</big></font></a></td>
+ <td><a href="index.htm"><font face="Arial" color="#FFFFFF"><big>More</big></font></a></td>
+ </tr>
+</table>
+<h1>Boost Implementation Variations</h1>
+<h2>Separation of interface and implementation</h2>
+<p>The interface specifications for boost.org library components (as well as for
+quality software in general) are conceptually separate from implementations of
+those interfaces. This may not be obvious, particularly when a component is
+implemented entirely within a header, but this separation of interface and
+implementation is always assumed. From the perspective of those concerned with
+software design, portability, and standardization, the interface is what is
+important, while the implementation is just a detail.</p>
+<p>Dietmar Kühl, one of the original boost.org contributors, comments &quot;The
+main contribution is the interface, which is augmented with an implementation,
+proving that it is possible to implement the corresponding class and providing a
+free implementation.&quot;</p>
+<b>
+<h2>Implementation variations</h2>
+</b>
+<p>There may be a need for multiple implementations of an interface, to
+accommodate either platform dependencies or performance tradeoffs. Examples of
+platform dependencies include compiler shortcomings, file systems, thread
+mechanisms, and graphical user interfaces. The classic example of a performance
+tradeoff is a fast implementation which uses a lot of memory versus a slower
+implementation which uses less memory.</p>
+<p>Boost libraries generally use a <a href="../libs/config/index.htm">configuration
+header</a>, boost/config.hpp, to capture compiler and platform
+dependencies.&nbsp; Although the use of boost/config.hpp is not required, it is
+the preferred approach for simple configuration problems.&nbsp;&nbsp;</p>
+<h2>Boost policy</h2>
+<p>The Boost policy is to avoid platform dependent variations in interface
+specifications, but supply implementations which are usable over a wide range of
+platforms and applications.&nbsp; That means boost libraries will use the
+techniques below described as appropriate for dealing with platform
+dependencies.</p>
+<p>The Boost policy toward implementation variations designed to enhance
+performance is to avoid them unless the benefits greatly exceed the full
+costs.&nbsp; The term &quot;full costs&quot; is intended to include both
+tangible costs like extra maintenance, and intangible cost like increased
+difficulty in user understanding.</p>
+<b>
+<h2>Techniques for providing implementation variations</h2>
+</b>
+<p>Several techniques may be used to provide implementation variations. Each is
+appropriate in some situations, and not appropriate in other situations.</p>
+<h3>Single general purpose implementation</h3>
+<p>The first technique is to simply not provide implementation variation at
+all.&nbsp; Instead, provide a single general purpose implementation, and forgo
+the increased complexity implied by all other techniques.</p>
+<p><b>Appropriate:</b>&nbsp; When it is possible to write a single portable
+implementation which has reasonable performance across a wide range of
+platforms. Particularly appropriate when alternative implementations differ only
+in esoteric ways.</p>
+<p><b>Not appropriate:</b> When implementation requires platform specific
+features, or when there are multiple implementation possible with widely
+differing performance characteristics.</p>
+<p>Beman Dawes comments &quot;In design discussions some implementation is often
+alleged to be much faster than another, yet&nbsp; a timing test discovers no
+significant difference. The lesson is that while algorithmic differences may
+affect speed dramatically, coding differences such as changing a class from
+virtual to non-virtual members or removing a level of indirection are unlikely
+to make any measurable difference unless deep in an inner loop. And even in an
+inner loop, modern CPU’s often execute such competing code sequences in the
+same number of clock cycles!&nbsp; A single general purpose implementation is
+often just fine.&quot;</p>
+<p>Or as Donald Knuth said, &quot;Premature optimization is the root of all
+evil.&quot; (Computing Surveys, vol 6, #4, p 268).</p>
+<h3>Macros</h3>
+<p>While the evils of macros are well known, there remain a few cases where
+macros are the preferred solution:</p>
+<blockquote>
+ <ul>
+ <li>&nbsp;Preventing multiple inclusion of headers via #include guards.</li>
+ <li>&nbsp;Passing minor configuration information from a configuration
+ header to other files.</li>
+ </ul>
+</blockquote>
+<p><b>Appropriate:</b>&nbsp; For small compile-time variations which would
+otherwise be costly or confusing to install, use, or maintain. More appropriate
+to communicate within and between library components than to communicate with
+library users.</p>
+<p><b>Not appropriate:&nbsp;</b> If other techniques will do.</p>
+<p>To minimize the negative aspects of macros:</p>
+<blockquote>
+ <ul>
+ <li>Only use macros when they are clearly superior to other
+ techniques.&nbsp; They should be viewed as a last resort.</li>
+ <li>Names should be all uppercase, and begin with the namespace name. This
+ will minimize the chance of name collisions. For example, the #include
+ guard for a boost header called foobar.h might be named BOOST_FOOBAR_H.</li>
+ </ul>
+</blockquote>
+<h3>Separate files</h3>
+<p>A library component can have multiple variations, each contained in its own
+separate file or files.&nbsp; The files for the most appropriate variation are
+copied to the appropriate include or implementation directories at installation
+time.</p>
+<p>The way to provide this approach in boost libraries is to include specialized
+implementations as separate files in separate sub-directories in the .ZIP
+distribution file. For example, the structure within the .ZIP distribution file
+for a library named foobar which has both default and specialized variations
+might look something like:</p>
+<blockquote>
+ <pre>foobar.h // The default header file
+foobar.cpp // The default implementation file
+readme.txt // Readme explains when to use which files
+self_contained/foobar.h // A variation with everything in the header
+linux/foobar.cpp // Implementation file to replace the default
+win32/foobar.h // Header file to replace the default
+win32/foobar.cpp // Implementation file to replace the default</pre>
+</blockquote>
+<p><b>Appropriate:</b>&nbsp; When different platforms require different
+implementations, or when there are major performance differences between
+possible implementations.&nbsp;</p>
+<p><b>Not appropriate:</b>&nbsp; When it makes sense to use more that one of the
+variations in the same installation.</p>
+<h3>Separate components</h3>
+<p>Rather than have several implementation variations of a single component,
+supply several separate components. For example, the Boost library currently
+supplies <code>scoped_ptr</code> and <code>shared_ptr</code> classes rather than
+a single <code>smart_ptr</code> class parameterized to distinguish between the
+two cases.&nbsp; There are several ways to make the component choice:</p>
+<blockquote>
+ <ul>
+ <li>Hardwired by the programmer during coding.</li>
+ <li>Chosen by programmer written runtime logic (trading off some extra
+ space, time, and program complexity for the ability to select the
+ implementation at run-time.)</li>
+ </ul>
+</blockquote>
+<p><b>Appropriate: </b>When the interfaces for the variations diverge, and when
+it is reasonably to use more than one of the variations. When run-time selection
+of implementation is called for.</p>
+<p><b>Not appropriate:</b> When the variations are data type, traits, or
+specialization variations which can be better handled by making the component a
+template. Also not appropriate when choice of variation is best done by some
+setup or installation mechanism outside of the program itself.&nbsp; Thus
+usually not appropriate to cope with platform differences.</p>
+<p><b>Note:</b> There is a related technique where the interface is specified as
+an abstract (pure virtual) base class (or an interface definition language), and
+the implementation choice is passed off to some third-party, such as a
+dynamic-link library or object-request broker. While that is a powerful
+technique, it is way beyond the scope of this discussion.</p>
+<h3>Template-based approaches</h3>
+<p>Turning a class or function into a template is often an elegant way to cope
+with variations.&nbsp; Template-based approaches provide optimal space and time
+efficiency in return for constraining the implementation selection to compile
+time.&nbsp;</p>
+<p>Important template techniques include:</p>
+<blockquote>
+ <ul>
+ <li>Data type parameterization.&nbsp; This allows a single component to
+ operate on a variety of data types, and is why templates were originally
+ invented.</li>
+ <li>Traits parameterization.&nbsp; If parameterization is complex, bundling
+ up aspects into a single traits helper class can allow great variation
+ while hiding messy details.&nbsp; The C++ Standard Library provides
+ several examples of this idiom, such as <code>iterator_traits&lt;&gt;</code>
+ (24.3.1 lib.iterator.traits) and <tt>char_traits&lt;&gt;</tt> (21.2
+ lib.char.traits).</li>
+ <li>Specialization.&nbsp; A template parameter can be used purely for the
+ purpose of selecting a specialization. For example:</li>
+ </ul>
+ <blockquote>
+ <blockquote>
+ <pre>SomeClass&lt;fast&gt; my_fast_object; // fast and small are empty classes
+SomeClass&lt;small&gt; my_small_object; // used just to select specialization</pre>
+ </blockquote>
+ </blockquote>
+</blockquote>
+<p><b>Appropriate: </b>When the need for variation is due to data type or
+traits, or is performance related like selecting among several algorithms, and
+when a program might reasonably use more than one of the variations.</p>
+<p><b>Not appropriate:</b>&nbsp; When the interfaces for variations are
+different, or when choice of variation is best done by some mechanism outside of
+the program itself.&nbsp; Thus usually not appropriate to cope with platform
+differences.</p>
+<hr>
+<p>Revised <!--webbot bot="Timestamp" s-type="EDITED" s-format="%d %B, %Y" startspan -->06 February, 2001<!--webbot bot="Timestamp" endspan i-checksum="40406" --></p>
+
+</body>
+
+</html>
diff --git a/more/index.htm b/more/index.htm
new file mode 100644
index 0000000000..e7affcf78d
--- /dev/null
+++ b/more/index.htm
@@ -0,0 +1,86 @@
+<html>
+
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
+<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
+<meta name="ProgId" content="FrontPage.Editor.Document">
+<title>Boost More Information</title>
+</head>
+
+<body bgcolor="#FFFFFF" text="#000000">
+
+<table border="1" bgcolor="#007F7F" cellpadding="2">
+ <tr>
+ <td bgcolor="#FFFFFF"><img src="../c++boost.gif" alt="c++boost.gif (8819 bytes)" width="277" height="86"></td>
+ <td><a href="../index.htm"><font face="Arial" color="#FFFFFF"><big>Home</big></font></a></td>
+ <td><a href="../libs/libraries.htm"><font face="Arial" color="#FFFFFF"><big>Libraries</big></font></a></td>
+ <td><a href="../people/people.htm"><font face="Arial" color="#FFFFFF"><big>People</big></font></a></td>
+ <td><a href="faq.htm"><font face="Arial" color="#FFFFFF"><big>FAQ</big></font></a></td>
+ <td><a href="index.htm"><font face="Arial" color="#FFFFFF"><big>More</big></font></a></td>
+ </tr>
+</table>
+<h1>More Information</h1>
+<h2>Boost Policies</h2>
+<blockquote>
+ <p><b><a href="discussion_policy.htm">Mailing List Discussion Policy.</a></b>&nbsp;
+ What's acceptable and what isn't.</p>
+ <p><b><a href="lib_guide.htm">Library Requirements and Guidelines</a></b>.&nbsp;
+ Basic standards for those preparing a submission.</p>
+ <p><a href="test_policy.htm"><b>Test Policy and Protocols</b></a>.&nbsp; How
+ testing works at Boost.</p>
+ <p><a href="submission_process.htm"><b>Library Submission Process</b></a>.&nbsp;
+ How to submit a library to Boost.</p>
+ <p><b><a href="formal_review_process.htm">Library Formal Review Process</a></b>.
+ Including how to submit a review comment.</p>
+ <p><b><a href="header.htm">Header Policy</a></b>.&nbsp; Headers are where a
+ library contacts its users, so programming practices are particularly
+ important.</p>
+ <p><b><a href="imp_vars.htm">Implementation Variations</a></b>.&nbsp;
+ Sometimes one size fits all, sometimes it doesn't.&nbsp; This page deals with
+ the trade-offs.</p>
+ <p><b><a href="library_reuse.htm">Library Reuse</a></b>.&nbsp; Should Boost
+ libraries use other boost libraries?&nbsp; What about the C++ Standard
+ Library?&nbsp; It's another trade-off.</p>
+</blockquote>
+ <h2>Boost Whatever</h2>
+<blockquote>
+ <p> <a href="../status/compiler_status.html"><b>Compiler Status</b></a>&nbsp;&nbsp;
+ Describes what
+library works with which compiler.</p>
+<p> <a href="regression.html"><b>Internal Regression Test Suite</b></a>&nbsp;&nbsp;
+ Describes the tool for generating the compiler status tables
+<p> <a href="../libs/hdr_depend.html"><b>Header Dependencies</b></a>&nbsp;&nbsp;
+Describes what
+other headers each boost header includes.</p>
+</blockquote>
+<h2>Articles and Papers</h2>
+<blockquote>
+ <p><b><a href="count_bdy.htm">Counted Body Techniques</a></b> by <a href="../people/kevlin_henney.htm">Kevlin
+ Henney</a> is must reading for those interested in reference counting, a
+ widely used object management idiom.&nbsp; Originally published in <a href="http://www.accu.org/c++sig/public/Overload.html">Overload</a>
+ magazine.</p>
+ <p><b><a href="generic_programming.html">Generic Programming Techniques</a></b>
+ by <a href="../people/dave_abrahams.htm">David Abrahams</a> describes some of
+ the techniques used in Boost libraries.</p>
+ <p><b><a href="feature_model_diagrams.htm">Feature Model Diagrams in text and
+ HTML</a></b> describes how to represent feature model diagrams in text form.</p>
+ <p><b><a href="borland_cpp.html">Portability Hints: Borland C++ 5.5.1</a></b>
+ describes Borland C++ portability issues, with suggested workarounds.</p>
+ <p><a href="microsoft_vcpp.html"><b>Portability Hints: Microsoft VC++ 6.0 SP4</b></a>
+ describes Microsoft C++ portability issues, with suggested workarounds.</p>
+</blockquote>
+<h2>Links</h2>
+<blockquote>
+ <p>The C++ Standard (ISO/IEC 14882) is available online as a PDF file from the
+ <a href="http://www.ansi.org">ANSI</a> (American National Standards Institute)
+ Electronic Standards Store.&nbsp; The price is $US 18.00. The document is
+ certainly not a tutorial, but is interesting to those who care about the
+ precise specification of the language and the standard library.</p>
+</blockquote>
+ <p>&nbsp;</p>
+<hr>
+<p>Revised <!--webbot bot="Timestamp" s-type="EDITED" s-format="%d %B, %Y" startspan -->12 February, 2001<!--webbot bot="Timestamp" endspan i-checksum="40399" --></p>
+
+</body>
+
+</html>
diff --git a/more/lib_guide.htm b/more/lib_guide.htm
new file mode 100644
index 0000000000..1a547e009d
--- /dev/null
+++ b/more/lib_guide.htm
@@ -0,0 +1,346 @@
+<html>
+
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<title>Boost Library Requirements and Guidelines</title>
+<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
+<meta name="ProgId" content="FrontPage.Editor.Document">
+<meta name="Microsoft Border" content="none, default">
+</head>
+
+<body bgcolor="#FFFFFF" text="#000000">
+
+<table border="1" bgcolor="#007F7F" cellpadding="2">
+ <tr>
+ <td bgcolor="#FFFFFF"><img src="../c++boost.gif" alt="c++boost.gif (8819 bytes)" width="277" height="86"></td>
+ <td><a href="../index.htm"><font face="Arial" color="#FFFFFF"><big>Home</big></font></a></td>
+ <td><a href="../libs/libraries.htm"><font face="Arial" color="#FFFFFF"><big>Libraries</big></font></a></td>
+ <td><a href="../people/people.htm"><font face="Arial" color="#FFFFFF"><big>People</big></font></a></td>
+ <td><a href="faq.htm"><font face="Arial" color="#FFFFFF"><big>FAQ</big></font></a></td>
+ <td><a href="index.htm"><font face="Arial" color="#FFFFFF"><big>More</big></font></a></td>
+ </tr>
+</table>
+<h1 align="left">Boost Library Requirements and Guidelines</h1>
+<p align="left">This page describes requirements and guidelines for the content
+of a library submitted to Boost.</p>
+<p align="left">See the <a href="submission_process.htm">Boost Library
+Submission Process</a> page for a description of the process involved.</p>
+<h2 align="left">Requirements</h2>
+<p>To avoid the frustration and wasted time of a proposed library being
+rejected, it must meets these requirements:</p>
+<ul>
+ <li>The license must meet the <a href="#License">license requirements</a>
+ below. Restricted licenses like the GPL and LGPL are not acceptable.
+ </li>
+ <li>The
+ copyright <a href="#Ownership">ownership</a> must be clear.
+ </li>
+ <li>The library must be generally useful and not restricted to a narrow
+ problem domain.
+ </li>
+ <li>The library must meet the <a href="#Portability">portability requirements</a>
+ below.&nbsp;
+ </li>
+ <li>The library must come reasonably close to meeting the <a href="#Guidelines">Guidelines</a>
+ below.
+ <ul>
+ <li><a href="#Design and Programming">Design and Programming</a></li>
+ <li><a href="#Directory structure">Directory Structure</a></li>
+ <li><a href="#Documentation">Documentation</a></li>
+ </ul>
+ </li>
+ <li>The author must be willing to participate in discussions on the mailing
+ list, and to refine the library accordingly.</li>
+</ul>
+<p>There's no requirement that an author read the mailing list for a time before
+making a submission. It has been noted, however, that submissions which begin
+&quot;I just started to read this mailing list ...&quot; seem to fail, often
+embarrassingly.</p>
+<h3 align="left"><a name="License">License</a> requirements</h3>
+<ul>
+ <li>Must be simple to read and understand.
+ </li>
+ <li>Must grant permission to copy, use and modify the software for any use
+ (commercial and non-commercial) for no fee.
+ </li>
+ <li>Must require that the license appear on all copies of the software source
+ code.
+ </li>
+ <li>Must not require that the license appear with executables or other binary
+ uses of the library.
+ </li>
+ <li>Must not require that the source code be
+ available for execution or other binary uses of the library.
+ </li>
+ <li>May restrict the use of the name and description of the library to the
+ standard version found on the Boost web site.</li>
+</ul>
+<h3 align="left"><a name="Portability">Portability</a> requirements</h3>
+<ul>
+ <li>
+ <p align="left">A library's interface must portable and not restricted to a
+ particular compiler or operating system.
+ </li>
+ <li>
+ <p align="left">A library's implementation must if possible be portable and
+ not restricted to a particular compiler or operating system.&nbsp; If a
+ portable implementation is not possible, non-portable constructions are
+ acceptable if reasonably easy to port to other environments.
+ </li>
+ <li>
+ <p align="left">There is no requirement that a library run on C++ compilers
+ which do not conform to the ISO standard.&nbsp;
+ </li>
+ <li>
+ <p align="left">There is no requirement that a library run on any particular
+ C++ compiler.&nbsp; Boost contributors often try to ensure their libraries
+ work with popular compilers.&nbsp; The boost/config.hpp <a href="../libs/config/index.htm">configuration
+ header</a> is the preferred mechanism for working around compiler
+ deficiencies.</li>
+</ul>
+<p align="left">Since there is no absolute way to prove portability, many boost
+submissions demonstrate practical portability by compiling and executing
+correctly with two different C++ compilers, often under different operating
+systems.&nbsp; Otherwise reviewers may disbelieve that porting is in fact
+practical.</p>
+<h3 align="left"><a name="Ownership">Ownership</a></h3>
+<p align="left">Are you sure you own the library you are thinking of
+submitting?&nbsp;&nbsp; &quot;How to Copyright Software&quot; by MJ Salone, Nolo
+Press, 1990 says:</p>
+<blockquote>
+ <p align="left">Doing work on your own time that is very similar to
+ programming you do for your employer on company time can raise nasty legal
+ problems.&nbsp; In this situation, it's best to get a written release from
+ your employer in advance.</p>
+</blockquote>
+<p align="left">Place a copyright notice in all the important files you submit.
+Boost.org won't accept libraries without clear copyright information.</p>
+<h2 align="left"><a name="Guidelines">Guidelines</a></h2>
+<p align="left">Please use these guidelines as a checklist for preparing the
+content a library submission.&nbsp; Not every guideline applies to every
+library, but a reasonable effort to comply is expected.</p>
+<h3><a name="Design and Programming">Design and Programming</a></h3>
+<ul>
+ <li>Aim for ISO Standard C++. Than means making effective use of the standard
+ features of the language, and avoiding non-standard compiler extensions. It
+ also means using the C++ Standard Library where applicable.</li>
+</ul>
+<ul>
+ <li>Headers should be good neighbors. See the <a href="header.htm">header
+ policy</a>.</li>
+</ul>
+<ul>
+ <li>Follow quality programming practices. See, for example, &quot;Effective
+ C++&quot; 2nd Edition, and &quot;More Effective C++&quot;, both by Scott
+ Meyers, published by Addison Wesley.</li>
+</ul>
+<ul>
+ <li>Use the C++ Standard Library or other Boost libraries, but only when the
+ benefits outweigh the costs.&nbsp; Do not use libraries other than the C++
+ Standard Library or Boost. See <a href="library_reuse.htm">Library reuse</a>.</li>
+</ul>
+<ul>
+ <li>Read <a href="imp_vars.htm">Implementation Variation</a> to see how to
+ supply performance, platform, or other implementation variations.</li>
+</ul>
+<ul>
+ <li>Use the lowercase/underscore <a href="#Naming">naming conventions</a> of
+ the C++ standard library.&nbsp; Template parameter names begin with an
+ uppercase letter. Macro (gasp!) names should be all uppercase and begin with
+ BOOST_.</li>
+</ul>
+<ul>
+ <li>Choose meaningful names - explicit is better than implicit, and readability counts.
+ There is a strong preference for clear and descriptive names, even if
+ lengthy.</li>
+</ul>
+<ul>
+ <li>Use exceptions to report errors where appropriate, and write code that is
+ safe in the face of exceptions.</li>
+</ul>
+<ul>
+ <li>Avoid exception-specifications. See <a href="#Exception-specification">exception-specification
+ rationale</a>.</li>
+</ul>
+<ul>
+ <li>Provide sample programs or confidence tests so potential users can see how
+ to use your library.</li>
+</ul>
+<ul>
+ <li>Provide a regression test program or programs which follow the <a href="test_policy.htm">Test
+ Policies and Protocols</a>.</li>
+</ul>
+<ul>
+ <li>Although some boost members use proportional fonts, tabs, and unrestricted
+ line lengths in their own code, boost's widely distributed source code
+ should follow more conservative guidelines:
+ <ul>
+ <li>Use fixed-width fonts.&nbsp; See <a href="#code fonts">fonts rationale</a>.</li>
+ <li>Use spaces rather than tabs.</li>
+ <li>Limit line lengths to 80 characters.</li>
+ </ul>
+ </li>
+</ul>
+<ul>
+ <li>Begin all source files with:
+ <ul>
+ <li>A comment line describing the contents of the file.</li>
+ <li>Comments describing copyright and licensing.</li>
+ <li>A comment line referencing the Boost home page in the form:<br>
+ <code>// See http://www.boost.org for updates, documentation, and
+ revision history.</code><br>
+ [Including revision history in source files is no longer recommended;
+ the publicly available CVS repository better serves that purpose.]</li>
+ </ul>
+ </li>
+</ul>
+<h3><a name="Directory structure">Directory Structure</a></h3>
+<ul>
+ <li>All libraries have at their highest level a primary directory named for
+ the particular library. The primary directory may have sub-directories.</li>
+ <li>For very simple libraries implemented entirely within the library header,
+ all files go in the primary directory (except headers, which go in the boost
+ header directory).</li>
+</ul>
+<blockquote>
+ <p><b>Boost standard sub-directory names</b></p>
+ <table border="1" cellpadding="5">
+ <tr>
+ <td><b>Sub-directory</b></td>
+ <td><b>Contents</b></td>
+ <td><b>Required</b></td>
+ </tr>
+ <tr>
+ <td><code>build</code></td>
+ <td>Library build files such as make files or IDE project files.</td>
+ <td>If any build files.</td>
+ </tr>
+ <tr>
+ <td>doc</td>
+ <td>Documentation (HTML) files.</td>
+ <td>If several doc files.</td>
+ </tr>
+ <tr>
+ <td><code>example</code></td>
+ <td>Sample program files.</td>
+ <td>If several sample files.</td>
+ </tr>
+ <tr>
+ <td><code>src</code></td>
+ <td>Source files which must be compiled to build the library.&nbsp;</td>
+ <td>If any source files.</td>
+ </tr>
+ <tr>
+ <td><code>test</code></td>
+ <td>Regression or other test programs or scripts.</td>
+ <td>If several test files.</td>
+ </tr>
+ </table>
+</blockquote>
+<h3><a name="Documentation">Documentation</a></h3>
+<p>Even the simplest library needs some documentation; the amount should be
+proportional to the need.&nbsp; The documentation should assume the readers have
+a basic knowledge of C++, but are not necessarily experts.</p>
+<p>The format for documentation should be HTML, and should not require an
+advanced browser or server-side extensions.</p>
+<p>There is no single right way to do documentation. HTML documentation is often
+organized quite differently from traditional printed documents. Task-oriented
+styles differ from reference oriented styles. In the end, it comes down to the
+question: Is the documentation sufficient for the mythical &quot;average&quot;
+C++ programmer to use the library successfully?</p>
+<p>Appropriate topics for documentation often include:
+<ul>
+ <li>General introduction to the library.</li>
+ <li>Description of each class.</li>
+ <li>Relationship between classes.</li>
+ <li>For each function, as applicable, description, requirements
+ (preconditions), effects, post-conditions, returns, and throws.</li>
+ <li>Discussion of error detection and recovery strategy.</li>
+ <li>How to use including description of typical uses.</li>
+ <li>How to compile and link.</li>
+ <li>How to test.</li>
+ <li>Version or revision history.</li>
+ <li>Rationale for design decisions.&nbsp; See <a href="#Rationale">Rationale
+ rationale</a>.</li>
+ <li>Acknowledgements.&nbsp; See <a href="#Acknowledgements">Acknowledgments
+ rationale.</a></li>
+</ul>
+<h2>Rationale</h2>
+<p>Rationale for some of the requirements and guidelines follows.</p>
+<hr>
+<h3><a name="Exception-specification">Exception-specification</a> rationale</h3>
+<p>Exception specifications [ISO 15.4] are sometimes coded to indicate what
+exceptions may be thrown, or because the programmer hopes they will improved
+performance.&nbsp; But consider the follow member from a smart pointer:</p>
+<pre> T&amp; operator*() const throw() { return *ptr; }</pre>
+<p>This function calls no other functions; it only manipulates fundamental data
+types like pointers Therefore, no runtime behavior of the
+exception-specification can ever be invoked.&nbsp; The function is completely
+exposed to the compiler; indeed it is declared inline Therefore, a smart
+compiler can easily deduce that the functions are incapable of throwing
+exceptions, and make the same optimizations it would have made based on the
+empty exception-specification. A &quot;dumb&quot; compiler, however, may make
+all kinds of pessimizations.</p>
+<p>For example, some compilers turn off inlining if there is an
+exception-specification.&nbsp; Some compilers add try/catch blocks. Such
+pessimizations can be a performance disaster which makes the code unusable in
+practical applications.</p>
+<p>Although initially appealing, an exception-specification tends to have
+consequences that require <b>very</b> careful thought to understand. The biggest
+problem with exception-specifications is that programmers use them as though
+they have the effect the programmer would like, instead of the effect they
+actually have.</p>
+<p>A non-inline function is the one place a &quot;throws nothing&quot;
+exception-specification may have some benefit with some compilers.</p>
+<hr>
+<h3><a name="Naming">Naming</a> conventions rationale</h3>
+<p>The C++ standard committee's Library Working Group discussed this issue in
+detail, and over a long period of time. The discussion was repeated again in
+early boost postings. A short summary:</p>
+<ul>
+ <li>Naming conventions are contentious, and although several are widely used,
+ no one style predominates.
+ </li>
+ <li>Given the intent to propose portions of boost for the next revision of the
+ C++ standard library, boost decided to follow the standard library's
+ conventions.
+ </li>
+ <li>Once a library settles on a particular convention, a vast majority of
+ stakeholders want that style to be consistently used.
+ </li>
+</ul>
+<hr>
+<h3>Source <a name="code fonts">code fonts</a> rationale</h3>
+<p>Dave Abrahams comments: An important purpose (I daresay the primary purpose)
+of source code is communication: the documentation of intent. This is a doubly
+important goal for boost, I think. Using a fixed-width font allows us to
+communicate with more people, in more ways (diagrams are possible) right there
+in the source. Code written for fixed-width fonts using spaces will read
+reasonably well when viewed with a variable-width font, and as far as I can tell
+every editor supporting variable-width fonts also supports fixed width. I don't
+think the converse is true.</p>
+<hr>
+<h3><a name="Rationale">Rationale</a> rationale</h3>
+<p>Rationale is defined as &quot;The fundamental reasons for something;
+basis.&quot; by the American Heritage Dictionary.</p>
+<p>Beman Dawes comments:&nbsp; Failure to supply contemporaneous rationale for
+design decisions is a major defect in many software projects. Lack of accurate
+rationale causes issues to revisited endlessly, causes maintenance bugs when a
+maintainer changes something without realizing it was done a certain way for
+some purpose, and shortens the useful lifetime of software.</p>
+<p>Rationale is fairly easy to provide at the time decisions are made, but very
+hard to accurately recover even a short time later.</p>
+<hr>
+<h3><a name="Acknowledgements">Acknowledgements</a> rationale</h3>
+<p>As a library matures, it almost always accumulates improvements suggested to
+the authors by other boost members.&nbsp; It is a part of the culture of
+boost.org to acknowledge such contributions, identifying the person making the
+suggestion.&nbsp; Major contributions are usually acknowledged in the
+documentation, while minor fixes are often mentioned in comments within the code
+itself.</p>
+<hr>
+<p>Revised <!--webbot bot="Timestamp" s-type="EDITED" s-format="%d %B, %Y" startspan -->06 February, 2001<!--webbot bot="Timestamp" endspan i-checksum="40406" --></p>
+
+</body>
+
+</html>
diff --git a/more/library_reuse.htm b/more/library_reuse.htm
new file mode 100644
index 0000000000..35efd133ca
--- /dev/null
+++ b/more/library_reuse.htm
@@ -0,0 +1,72 @@
+<html>
+
+<head>
+<meta http-equiv="Content-Language" content="en-us">
+<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
+<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
+<meta name="ProgId" content="FrontPage.Editor.Document">
+<title>Boost Library Reuse</title>
+</head>
+
+<body bgcolor="#FFFFFF" text="#000000">
+
+<table border="1" bgcolor="#007F7F" cellpadding="2">
+ <tr>
+ <td bgcolor="#FFFFFF"><img src="../c++boost.gif" alt="c++boost.gif (8819 bytes)" width="277" height="86"></td>
+ <td><a href="../index.htm"><font face="Arial" color="#FFFFFF"><big>Home</big></font></a></td>
+ <td><a href="../libs/libraries.htm"><font face="Arial" color="#FFFFFF"><big>Libraries</big></font></a></td>
+ <td><a href="../people/people.htm"><font face="Arial" color="#FFFFFF"><big>People</big></font></a></td>
+ <td><a href="faq.htm"><font face="Arial" color="#FFFFFF"><big>FAQ</big></font></a></td>
+ <td><a href="index.htm"><font face="Arial" color="#FFFFFF"><big>More</big></font></a></td>
+ </tr>
+</table>
+&nbsp;
+<h1>Boost Library reuse: cost versus benefit trade-offs</h1>
+<p>A Boost library <b>should not</b> use libraries other than Boost or the C++
+Standard Library.</p>
+<p>A Boost library <b>should</b> use other Boost Libraries or the C++ Standard
+Library, but only when the benefits outweigh the costs.&nbsp;</p>
+<p>The benefits of using components from other libraries may include clearer,
+more understandable code, reduced development and maintenance costs, and the
+assurance which comes from reusing well-known and trusted building blocks.</p>
+<p>The costs may include undesirable coupling between components, and added
+compilation and runtime costs.&nbsp; If the interface to the additional
+component is complex, using it may make code less readable, and thus actually
+increase development and maintenance costs.</p>
+<p>Negative effects of coupling become obvious when one library uses a second
+library which uses a third, and so on. The worst form of coupling requires the
+user understand each of the coupled libraries. Coupling may also reduce the
+portability of a library - even in case when all used libraries are
+self-sufficient (see example of questionable usage of &lt;iostream&gt; library
+below).</p>
+<p><b>Example where another boost component should certainly be used:</b>&nbsp;
+boost::noncopyable (in <a href="../boost/utility.hpp">boost/utility.hpp</a>) has
+considerable benefits; it simplifies code, improves readability, and signals
+intent.&nbsp; Costs are low as coupling is limited;&nbsp; noncopyable itself
+uses no other classes and its header includes only the lightweight headers
+&lt;boost/config.hpp&gt; and &lt;cstddef&gt;.&nbsp; There are no runtime costs
+at all. With costs so low and benefits so high, other boost libraries should use
+boost::noncopyable when the need arises except in exceptional circumstances.</p>
+<p><b>Example where a standard library component might possibly be used:</b>
+Providing diagnostic output as a debugging aid can be a nice feature for a
+library. Yet using Standard Library &lt;iostream&gt; can involves a lot of
+additional cost, particularly if &lt;iostream&gt; is unlikely to be use
+elsewhere in the application.&nbsp; In certain GUI or embedded applications,
+coupling to &lt;iostream&gt; would be a disqualification.&nbsp;&nbsp;&nbsp;
+Consider redesign of the boost library in question so that the user supplies the
+diagnostic output mechanism.</p>
+<p><b>Example where another boost component should not be used:</b>&nbsp; The
+boost dir_it library has considerable coupling and runtime costs, not to mention
+portability issues for unsupported operating systems.&nbsp; While completely
+appropriate when directory iteration is required, it would not be reasonable for
+another boost library to use dir_it just to check that a file is available
+before opening.&nbsp; C++ Standard Library file open functionality does this at
+lower cost.&nbsp; Don't use dir_it just for the sake of using a boost library.</p>
+<hr>
+<p>Revised <!--webbot bot="Timestamp" s-type="EDITED" s-format="%d %B %Y" startspan -->06 February 2001<!--webbot bot="Timestamp" endspan i-checksum="40613" --></p>
+<p>&nbsp;</p>
+<p>&nbsp;</p>
+
+</body>
+
+</html>
diff --git a/more/microsoft_vcpp.html b/more/microsoft_vcpp.html
new file mode 100644
index 0000000000..42cb674e02
--- /dev/null
+++ b/more/microsoft_vcpp.html
@@ -0,0 +1,281 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<title>Portability Hints: Microsoft Visual C++ 6.0 SP4</title>
+</head>
+
+<body bgcolor="#FFFFFF" text="#000000">
+
+<table border="1" bgcolor="#007F7F" cellpadding="2">
+ <tr>
+ <td bgcolor="#FFFFFF"><img src="../c++boost.gif" alt="c++boost.gif (8819 bytes)" width="277" height="86"></td>
+ <td><a href="../index.htm"><font face="Arial,Helvetica" color="#FFFFFF"><big>Home</big></font></a></td>
+ <td><a href="../libs/libraries.htm"><font face="Arial,Helvetica" color="#FFFFFF"><big>Libraries</big></font></a></td>
+ <td><a href="../people/people.htm"><font face="Arial,Helvetica" color="#FFFFFF"><big>People</big></font></a></td>
+ <td><a href="faq.htm"><font face="Arial,Helvetica" color="#FFFFFF"><big>FAQ</big></font></a></td>
+ <td><a href="index.htm"><font face="Arial,Helvetica" color="#FFFFFF"><big>More</big></font></a></td>
+ </tr>
+</table>
+
+<p>
+
+<h1>Portability Hints: Microsoft Visual C++ 6.0 SP4</h1>
+
+Similar to the
+<a href="borland_cpp.html">portability hints for Borland C++</a>,
+this page provides hints on some language features of the Microsoft Visual C++
+version 6.0 service pack 4 compiler. A list of
+acknowledged deficiencies can be found at the
+<a href="http://support.microsoft.com/support/kb/articles/q243/4/51.asp">Microsoft support site</a>.
+<p>
+
+Each entry in the following list describes a particular issue,
+complete with sample source code to demonstrate the effect.
+Most sample code herein has been verified to compile with gcc 2.95.2
+and Comeau C++ 4.2.44.
+
+
+<h2>Preprocessor symbol</h2>
+
+The preprocessor symbol <code>_MSC_VER</code> is defined for all
+Microsoft C++ compilers. Its value is the internal version number of the
+compiler interpreted as a decimal number. Since a few other compilers
+also define this symbol, boost provides the symbol
+<code>BOOST_MSVC</code>, which is defined in
+<a href="../boost/config.hpp">boost/config.hpp</a>
+to the value of _MSC_VER if and only if the compiler is really
+Microsoft Visual C++.
+
+The following table lists some known values.
+<p>
+
+<table border="1">
+<tr>
+<th>Compiler</th>
+<th><code>BOOST_MSVC</code> value</th>
+</tr>
+
+<tr>
+<td>Microsoft Visual C++ 6.0 (up to SP4)</td>
+<td>1200</td>
+</tr>
+
+</table>
+
+
+<h2>Core Language</h2>
+
+<h3>[chained using] Chaining <code>using</code>-declarations</h3>
+
+Chaining <code>using</code>-declarations do not work.
+<pre>
+void f();
+
+namespace N {
+ using ::f;
+}
+
+void g()
+{
+ using N::f; // C2873: 'f': the symbol cannot be used in a using-declaration
+}
+</pre>
+
+
+<h3>[explicit-instantiation] Explicit function template
+instantiation</h3>
+
+Trying to explicitly instantiate a function template leads to the
+wrong function being called silently.
+
+<pre>
+#include &lt;stdio.h&gt;
+
+template&lt;class T&gt;
+void f()
+{
+ printf(&quot;%d\n&quot;, sizeof(T));
+}
+
+int main()
+{
+ f&lt;double&gt;(); // output: &quot;1&quot;
+ f&lt;char&gt;(); // output: &quot;1&quot;
+ return 0;
+}
+</pre>
+
+
+<h3>[for-scoping] Scopes of definitions in for-loops</h3>
+
+The scope of variable definitions in <code>for</code> loops should be
+local to the loop's body, but it is instead local to the enclosing
+block.
+
+
+<pre>
+int main()
+{
+ for(int i = 0; i &lt; 5; ++i)
+ ;
+ for(int i = 0; i &lt; 5; ++i) // C2374: 'i': Redefinition; multiple initialization
+ ;
+ return 0;
+}
+</pre>
+
+<strong>Workaround:</strong> Enclose the offending <code>for</code>
+loops in another pair of curly braces.
+
+
+<h3>[inclass-member-init] In-class member initialization</h3>
+
+In-class member initialization, required to implement a
+Standard-conforming <code>std::numeric_limits</code> template, does
+not work.
+
+<pre>
+struct A
+{
+ static const int i = 5; // &quot;invalid syntax for pure virtual method&quot;
+};
+</pre>
+
+<strong>Workaround:</strong> Either use an enum (which has incorrect
+type, but can be used in compile-time constant expressions), or define
+the value out-of-line (which allows for the correct type, but prohibits
+using the constant in compile-time constant expressions).
+
+<h3>[koenig-lookup] Argument-dependent lookup</h3>
+
+Argument-dependent lookup, also called Koenig lookup, works for
+overloaded operators, but not for ordinary functions. No
+additional namespaces induced from the argument types seem to be
+considered.
+
+<pre>
+namespace N {
+ struct A {};
+ void f(A);
+}
+
+void g()
+{
+ N::A a;
+ f(a); // 'f': undeclared identifier
+}
+</pre>
+
+
+<h3>[template-friend] Templates as friends</h3>
+
+A Template cannot be declared a friend of a class.
+
+<pre>
+template&lt;class T&gt;
+struct A {};
+
+struct B
+{
+ template&lt;class T&gt;
+ friend struct A; // &quot;syntax error&quot;
+};
+</pre>
+
+
+<h3>[member-template-outofline] Out-of-line definitions of member
+templates</h3>
+
+Defining member templates outside their enclosing class does not work.
+
+<pre>
+template&lt;class T&gt;
+struct A
+{
+ template&lt;class U&gt;
+ void f();
+};
+
+template&lt;class T&gt;
+template&lt;class U&gt; // &quot;syntax error&quot;
+void A&lt;T&gt;::f() // &quot;T: undeclared identifier&quot;
+{
+}
+</pre>
+
+<strong>Workaround:</strong> Define member templates in-line within
+their enclosing class.
+
+
+<h3>[partial-spec] Partial specialization</h3>
+
+Partial specialization of class templates does not work.
+
+<pre>
+template&lt;class T&gt;
+struct A {};
+
+template&lt;class T&gt;
+struct B {};
+
+template&lt;class T&gt;
+struct A&lt;B&lt;T&gt; &gt; {}; // template class was already defined as a non-template
+</pre>
+
+<strong>Workaround:</strong> In some situations where interface
+does not matter, member class templates can simulate partial
+specialization.
+
+
+<h3>[template-value] Dependent template value parameters</h3>
+
+Template value parameters whose type depends on a previous template
+parameter provoke an internal compiler error if the correct syntax
+(with "typename") is used.
+
+<pre>
+template&lt;class T, typename T::result_type&gt; // C1001: INTERNAL COMPILER ERROR: msc1.cpp, line 1794
+struct B {};
+ // (omit &quot;typename&quot; and it compiles)
+
+</pre>
+
+<strong>Workaround:</strong> Leave off the "typename" keyword. That makes
+the program non-conforming, though.
+
+
+<h3>[wchar_t] <code>wchar_t</code> is not built-in</h3>
+
+The type <code>wchar_t</code> is not a built-in type.
+
+<pre>
+wchar_t x; // &quot;missing storage class or type identifier&quot;
+</pre>
+
+<strong>Workaround:</strong> When using Microsoft Visual C++, the
+header
+<a href="../boost/config.hpp">boost/config.hpp</a>
+includes <code>&lt;cstddef></code>, which defines
+<code>wchar_t</code> as a typedef for <code>unsigned
+short</code>. Note that this means that the compiler does not see
+<code>wchar_t</code> and <code>unsigned short</code> as distinct
+types, as is required by the standard, and so ambiguities may emanate
+when overloading on <code>wchar_t</code>. The macro
+<code>BOOST_NO_INTRINSIC_WCHAR_T</code> is defined in this situation.
+
+<h2>
+Standard Library</h2>
+<h3>[clib-namespace] C library names in global namespace instead of std</h3>
+<p>Library names from the &lt;c...&gt; headers are in the global namespace
+instead of namespace std.<p><b>Workaround:</b>&nbsp; The header <a href="../libs/config/index.htm">boost/config.hpp</a>
+will define BOOST_NO_STDC_NAMESPACE. It can be used as follows:
+<pre># ifdef BOOST_NO_STDC_NAMESPACE
+ namespace std { using ::abs; using ::fabs; }
+# endif</pre>
+<p>Because std::size_t and std::ptrdiff_t are so commonly used, the workaround
+for these is already provided in boost/config.hpp.<p>&nbsp;
+<hr>
+
+2001-02-01 <a href="../people/jens_maurer.htm">Jens Maurer</a>
+</body>
+</html>
diff --git a/more/regression.html b/more/regression.html
new file mode 100644
index 0000000000..94cb8867f1
--- /dev/null
+++ b/more/regression.html
@@ -0,0 +1,256 @@
+<html>
+
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+
+<title>Boost Internal Regression Test Suite</title>
+</head>
+
+<body bgcolor="#FFFFFF" text="#000000">
+
+<table border="1" bgcolor="#007F7F" cellpadding="2">
+ <tr>
+ <td bgcolor="#FFFFFF"><img src="../c++boost.gif" alt="c++boost.gif (8819 bytes)" width="277" height="86"></td>
+ <td><a href="../index.htm"><font face="Arial,Helvetica" color="#FFFFFF"><big>Home</big></font></a></td>
+ <td><a href="../libs/libraries.htm"><font face="Arial,Helvetica" color="#FFFFFF"><big>Libraries</big></font></a></td>
+ <td><a href="../people/people.htm"><font face="Arial,Helvetica" color="#FFFFFF"><big>People</big></font></a></td>
+ <td><a href="../more/faq.htm"><font face="Arial,Helvetica" color="#FFFFFF"><big>FAQ</big></font></a></td>
+ <td><a href="../more/index.htm"><font face="Arial,Helvetica" color="#FFFFFF"><big>More</big></font></a></td>
+ </tr>
+</table>
+
+
+<h1>Boost Internal Regression Test Suite</h1>
+
+Boost's internal regression test suite produces the
+<a href="../status/compiler_status.html">compiler status tables</a>.
+<p>Although not ordinarily run by Boost library users, it is documented here for
+the benefit of Boost developers, and for Boost users porting to a new platform.</p>
+
+<h2>Requirements</h2>
+
+The test suite has been designed to meet to the following requirements.
+<ul>
+<li>Pure ISO C++, no tools required except a C++ compiler.
+<li>Support for tests which expect an error
+<li>Flexible configuration
+<li>HTML output
+</ul>
+
+These requirements rule out any script-based approach such as dejagnu
+(requires Tcl and expect) or even shell scripts.
+
+
+<h2>Running Regression Tests</h2>
+
+The implementation is provided in a single source file named
+<a href="../status/regression.cpp">regression.cpp</a>.
+<p>
+You should be able to compile and link this file using whatever C++
+compiler is at your disposition. However, you may need to configure
+both the compiler and the standard library to use "strict" ISO
+compliance mode. Also, you need to extend the search path for include
+files with the main boost directory so that the header file
+<a href="../boost/config.hpp">boost/config.hpp</a>
+can be found. This header file is required to work around compiler
+deficiencies.
+<p>
+
+You can then start the resulting executable to run regression tests.
+By default, the regression test program reads the file "compiler.cfg"
+in the current directory to determine the list of compilers and their
+invocation syntax. After that, it reads the file "regression.cfg" in
+the current directory to determine the regression tests to run. The
+results of the regression tests are written in an HTML formatted text
+file. This file is by default named "cs-OS.html" in the current
+directory, where "OS" is a placeholder for the name of the operating
+system (e.g., "linux" or "win32").
+<p>
+
+To generate the
+<a href="../status/compiler_status.html">compiler status tables</a>,
+boost uses the files
+<a href="../status/compiler.cfg">status/compiler.cfg</a>
+and
+<a href="../status/regression.cfg">status/regression.cfg</a>.
+<p>
+
+The regression test program accepts some command-line options to alter
+its behavior.
+<p>
+<table border="1">
+
+<tr>
+<td>-h <em>or</em> --help</td>
+<td>prints a help message
+</tr>
+
+<tr>
+<td>--config <em>file</em></td>
+<td>Use <em>file</em> instead of "compiler.cfg" as the compiler
+configuration file. This allows for private compiler setups.</td>
+</tr>
+
+<tr>
+<td>--tests <em>file</em></td>
+<td>Use <em>file</em> instead of "regression.cfg" as the tests
+configuration file. This allows individual libraries to specify
+additional tests not to be published in the main
+<a href="../status/compiler_status.html">compiler status tables</a>.
+</td>
+</tr>
+
+<tr>
+<td>--boost <em>path</em></td>
+<td>Use <em>path</em> as the filesystem path to the main boost
+directory. The default is "..", i.e. the parent directory.</td>
+</tr>
+
+<tr>
+<td>--output <em>file</em><br>-o <em>file</em></td>
+<td>Write the HTML output to <em>file</em> instead of the default
+"cs-OS.html".</td>
+</tr>
+
+<tr>
+<td>--compiler <em>name</em></td>
+<td>Run the tests only with compiler <em>name</em>. The <em>name</em>
+must be defined in the second line of an applicable compiler
+configuration (see below). The default is to run the tests with all
+compilers suitable for the platform.</td>
+</tr>
+
+<tr>
+<td>--diff</td>
+<td>Read the HTML output file before writing it. In the HTML output,
+highlight differences in test outcomes compared to the previous
+run.</td>
+</tr>
+
+<tr>
+<td><em>test</em></td>
+<td>Run only the named test. The syntax is the same as in the
+configuration file (see below).</td>
+</tr>
+</table>
+<p>
+When running only a selected test, you must also provide an alternate
+HTML output filename with "--output" so that the full test output is
+not accidentally overwritten.
+<p>
+
+You should redirect the output (<code>std::cout</code>) and error
+(<code>std::cerr</code>) channels to a suitable log file for later
+inspection.
+
+
+<h2>Configuration Files</h2>
+
+In both configuration files, single-line comments starting with "//"
+at the leftmost column are ignored.
+
+<h3>Compiler Configuration</h3>
+
+The compiler configuration file can contain descriptions for an
+arbitrary number of compilers. Each compiler is configured by a block
+of six consecutive text lines.
+<ol>
+<li>Name of the operating system for which the entry is applicable
+(e.g., "linux" or "win32").
+<li>Name of the compiler; should be unique within one operating
+system. The name of the compiler should not contain the version
+number, because it is expected that regression tests are always run
+with the most recent compiler version available.
+<li>Name and version number of the compiler. This is printed on
+<code>std::cout</code> prior to running a test with that compiler.
+<li>Command-line invocation of the compiler to compile a single source
+file to an object file.
+<li>Command-line invocation of the compiler to compile a single source
+file to an executable.
+<li>Identification of the compiler for inclusion in the HTML output;
+may contain HTML tags such as &lt;br>.
+</ol>
+
+The two command-lines are subject to the following substitutions:
+<ul>
+<li>Any string starting with a dollar symbol "$", then containing an
+arbitrary number of underscores, digits, or uppercase letters, is
+replaced by the value of the associated environment variable.
+<li>%include is replaced by the path given by the "--boost" command
+line option (".." by default). This should be used to extend the
+search path of your compiler so that the boost header files are found.
+<li>%source is the name of the source file to be compiled, qualified
+with the path given by the "--boost" command-line option (".." by
+default).
+</ul>
+
+
+<h3>Test Configuration</h3>
+
+The test configuration file can contain descriptions for an arbitrary
+number of tests. Each test is described by a single line. The first
+word (up to the first space) is the type of the test, the next word
+gives the filename of the test relative the directory to be given by the
+"--boost" command-line option. Optionally, additional words are
+passed on as command-line arguments when the test is executed (only
+for types "run" and "run-fail"). In these arguments, "%boost" is
+replaced by the path given by the "--boost" command-line option (".."
+by default).
+<p>
+
+The following test types are available:
+<ul>
+<li>compile: The given test file should compile successfully.
+Otherwise, the test fails.
+<li>compile-fail: The given test file should not compile successfully,
+but instead the compiler should give an error message. If the test
+does compile successfully, the test fails.
+<li>link: The given test file should compile and link successfully.
+Otherwise, the test fails. In particular, a <code>main</code>
+function must be present in the test file.
+<li>link-fail: The given test file should not compile and link
+successfully. It is not specified whether the compile or the link
+should not succeed. If the test does compile and link successfully,
+the test fails.
+<li>run: The given test file should compile and link successfully.
+After that, the resulting executable is invoked and should return a
+zero exit code. If any of these steps fail, the test fails.
+<li>run-fail: The given test file is compiled, linked, and, if an
+executable was successfully generated, it is invoked. Either
+compiling or linking should fail or the resulting executable should
+return a non-zero exit code. If compiling and linking succeeds and
+the resulting executable returns a zero exit code, the test fails.
+</ul>
+
+<h2>Adapting for a New Platform</h2>
+
+In order to adapt the regression test suite for a new platform, a few
+changes to the <a href="../status/regression.cpp">regression.cpp</a>
+are required.
+
+<ul>
+<li>Add an appropriate check for your platform in
+<code>get_host()</code> and return a unique string identifying the
+platform (this string is used to filter the compile configuration
+file).
+<li>Verify that <code>get_system_configuration()</code> is
+appropriately defined for your platform. For a Unix platform, it most
+likely is. The function may return a verbose HTML string describing
+the platform.
+</ul>
+
+You also need to configure the compilers available on your platform in
+"compiler.cfg" as described above.
+<p>You may need to add an entry for the compiler to <a href="../boost/config.hpp">boost/config.hpp</a>,
+but only if entries for the compiler is not already present, and the compiler
+doesn't fully conform to the ISO C++ Standard.</p>
+<h2>History</h2>
+<p>The regression.cpp test program was contributed
+by Jens Maurer, generalizing and improving an earlier program by Beman Dawes.</p>
+
+<hr>
+2001-01-30<br>
+<a href="../people/jens_maurer.htm">Jens Maurer</a>
+
+</body>
+</html>
diff --git a/more/submission_process.htm b/more/submission_process.htm
new file mode 100644
index 0000000000..ba39f2a2de
--- /dev/null
+++ b/more/submission_process.htm
@@ -0,0 +1,160 @@
+<html>
+
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
+<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
+<meta name="ProgId" content="FrontPage.Editor.Document">
+<title>Boost Library Submission Process</title>
+</head>
+
+<body bgcolor="#FFFFFF" text="#000000">
+
+<table border="1" bgcolor="#007F7F" cellpadding="2">
+ <tr>
+ <td bgcolor="#FFFFFF"><img src="../c++boost.gif" alt="c++boost.gif (8819 bytes)" width="277" height="86"></td>
+ <td><a href="../index.htm"><font face="Arial" color="#FFFFFF"><big>Home</big></font></a></td>
+ <td><a href="../libs/libraries.htm"><font face="Arial" color="#FFFFFF"><big>Libraries</big></font></a></td>
+ <td><a href="../people/people.htm"><font face="Arial" color="#FFFFFF"><big>People</big></font></a></td>
+ <td><a href="faq.htm"><font face="Arial" color="#FFFFFF"><big>FAQ</big></font></a></td>
+ <td><a href="index.htm"><font face="Arial" color="#FFFFFF"><big>More</big></font></a></td>
+ </tr>
+</table>
+<h1>Boost Library Submission Process</h1>
+<p>This page describes the process of getting a library accepted by Boost.&nbsp;
+The process is still evolving, so if you have suggestions for improvement by all
+means post them on the mailing list.</p>
+<p>See the <a href="lib_guide.htm">Boost Library Requirements and Guidelines</a>
+page for issues of content.</p>
+<h3><b>Steps for getting a library accepted by Boost:</b></h3>
+<ul>
+ <li><a href="#Learn">Learn about Boost</a>.</li>
+ <li><a href="#interest">Determine interest</a>.</li>
+ <li><a href="#Preliminary">Preliminary submission</a>.</li>
+ <li><a href="#Refinement">Refinement</a>.</li>
+ <li><a href="#Review">Formal Review</a>.</li>
+ <li><a href="#site posting">Web site posting</a>.</li>
+ <li><a href="#Lifecycle">Lifecycle</a>.</li>
+</ul>
+<h2><a name="Learn">Learn</a> about Boost</h2>
+<p>Subscribe to the <a href="../index.htm#Mailing List">mailing list</a> for a
+while, or look through the <a href="http://www.egroups.com/messages/boost">archives</a>.&nbsp;
+Click around the <a href="../index.htm">web site</a>.&nbsp; Understand the <a href="lib_guide.htm">Requirements</a>.&nbsp;
+Read the rest of this page to learn about the process.&nbsp; Otherwise, you will
+just end up wasting everyone's time.</p>
+<p>There is a culture associated with Boost, aimed at encouraging high quality
+libraries by a process of discussion and refinement.</p>
+<p>If what you really want is a site that will just post your library without
+even looking at it, you should go elsewhere.</p>
+<h2>Determine <a name="interest">interest</a></h2>
+<p>Potential library submitters should use the <a href="../index.htm#Mailing List">mailing
+list</a> as a forum to gauge interest a possible submission.</p>
+<p>A message might be as simple as &quot;Is there any interest in a library
+which solves Traveling Salesperson problems in linear time?&quot;</p>
+<p>A bit of further description or snippet of code may be helpful. Messages
+should be plain text; not rich text, HTML, etc.</p>
+<p>Please don't post lengthy descriptions, documentation, or code to the mailing
+list, and no attachments, even small ones.&nbsp; Please post lengthy material in
+the eGroups boost <a href="http://www.egroups.com/files/boost/">Files section</a>
+(formerly called the &quot; vault&quot;).&nbsp;</p>
+<h2><a name="Preliminary">Preliminary</a> submission</h2>
+<p>If response to an initial query indicates interest, then post preliminary
+files in the <a href="http://www.egroups.com/files/boost/">Files section</a> of
+the boost eGroups web site if you haven't already done so.</p>
+<h2><a name="Refinement">Refinement</a></h2>
+<p>Discuss, refine, resubmit.&nbsp; Repeat until satisfied.</p>
+<p>The exact details of this process varies a lot.&nbsp; Sometimes it is public,
+on the mailing list, sometimes a lot of discussion happens in private
+emails.&nbsp; For some libraries the process is over quickly, for others it goes
+on for months.&nbsp; It's often challenging, and sometimes leads off in
+completely unexpected directions.&nbsp;&nbsp;</p>
+<p>The <a href="http://www.egroups.com/messages/boost">archive</a> of past
+messages is one way to see how this process worked for other boost
+libraries.&nbsp;</p>
+<h2>Formal <a name="Review">Review</a></h2>
+<p>Before asking for formal review, please verify that your submission compiles
+and runs under at least two compilers.&nbsp; This flushes out obvious
+portability problems.&nbsp; If you don't have access to a second compiler, ask
+for help on the Boost mailing list.</p>
+<p>Once a library author feels a submission (which presumably is now in the
+files/vault) has matured enough for formal review, the author sends a message
+requesting a formal review to the mailing list.&nbsp; Please use a subject in
+the form &quot;Review Request: library&quot; where <i>library</i> is replaced by
+the library name.</p>
+<p>See <a href="formal_review_process.htm">Formal Review Process</a> for
+details.</p>
+<p>Formal Review schedules are posted on the boost mailing list..&nbsp;</p>
+<h2>Boost <a name="site posting">site posting</a></h2>
+<p>There are two ways that files are posted on the boost web site:</p>
+<ul>
+ <li>Direct update of the boost CVS repository.&nbsp; This requires write
+ access, and is primarily used for larger libraries, or for libraries
+ maintained by very active boost developers.</li>
+ <li>Packaging all files into submission file, and emailing it to the boost
+ webmaster.</li>
+</ul>
+<p>The submission file approach is as follows:</p>
+<h3>Packaging</h3>
+<p>All of the files which make up the library should be combined and compressed
+into a single final submission file using the .zip format.&nbsp; Free encoders
+and decoders for this format running on many different platforms are available
+at the <a href="http://www.info-zip.org/pub/infozip/">Info-ZIP</a> web site, which
+includes a FAQ and much other useful information about the .zip format. Many
+commercial compressor-archiver utilities also support this format.</p>
+<h3><a name="Final">Final</a> Submission file</h3>
+<p>The final submission file contains the material that will live on the
+boost.org web site.&nbsp; The closer the submission file mirrors the directory
+structure and format of the web site, the easier it is for the webmaster to
+integrate it into the web site.
+<p>The submission file for a library named <b>foo</b> should include these
+subdirectories, with the contents indicated:
+<blockquote>
+ <p><b>libs/foo</b>
+ <ul>
+ <li>An introductory page named index.html or index.htm which looks like the
+ initial page of other libraries. <a href="../libs/rational/index.html">Rational</a>&nbsp;
+ is a model for single part libraries, <a href="../libs/integer/index.htm">Integer</a>
+ is a model for
+ multi-part libraries.</li>
+ <li>The documentation page or pages, also in HTML format.</li>
+ <li>Source files implementing the library if it isn't entirely header
+ based.&nbsp; The boost file type convention for source files is <b>.cpp</b>.</li>
+ <li>Test programs and data files if supplied.</li>
+ <li>If the library has a large number of subsidiary files which aren't
+ linked to from the documentation pages, these subsidiary files can be
+ combined into a single .zip file.</li>
+ </ul>
+ <p><b>boost</b></p>
+ <ul>
+ <li>Public header files as described in the documentation for the
+ library.&nbsp; The boost file type convention for header files is <b>.hpp</b>.</li>
+ </ul>
+ <p><b>boost/detail</b></p>
+ <ul>
+ <li>Implementation header files not normally accessed by library users.</li>
+ </ul>
+</blockquote>
+<h3>Transmission</h3>
+<p>Submit via email to <a href="mailto:bdawes@acm.org">bdawes@acm.org</a>.&nbsp;&nbsp;
+Attach the .zip submission file.&nbsp; In the email message, please include your
+email address, postal mail address, and telephone number, if boost.org doesn't
+already have them. Your addresses and phone number will not appear on the web
+site (unless you include them in your biography).&nbsp; Anonymous postings are
+not accepted.</p>
+<h3>People pages</h3>
+<p>If the boost.org web site doesn't already have your capsule biography
+and&nbsp; picture (optional, with not-too-serious pictures preferred), please
+send them <a href="mailto:bdawes@acm.org">mailto:bdawes@acm.org</a>. It is
+up to you as to whether or not the biography includes your email address or
+other contact information.&nbsp; The preferred picture format is .jpg, but other
+common formats are acceptable.&nbsp; The preferred image size is 500x375 but the
+webmaster has photo editing software and can do the image preparation if
+necessary.</p>
+<h2><a name="Lifecycle">Lifecycle</a></h2>
+<p>Libraries are software; they loose their value over time if not
+maintained.&nbsp; Details still hazy.</p>
+<hr>
+<p>Revised <!--webbot bot="Timestamp" s-type="EDITED" s-format="%d %B, %Y" startspan -->10 March, 2001<!--webbot bot="Timestamp" endspan i-checksum="28765" --></p>
+
+</body>
+
+</html>
diff --git a/more/test_policy.htm b/more/test_policy.htm
new file mode 100644
index 0000000000..42c23e65ad
--- /dev/null
+++ b/more/test_policy.htm
@@ -0,0 +1,93 @@
+<html>
+
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
+<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
+<meta name="ProgId" content="FrontPage.Editor.Document">
+<title>Boost Test Policies and Protocols</title>
+</head>
+
+<body bgcolor="#FFFFFF" text="#000000">
+
+<table border="1" bgcolor="#007F7F" cellpadding="2">
+ <tr>
+ <td bgcolor="#FFFFFF"><img src="../c++boost.gif" alt="c++boost.gif (8819 bytes)" width="277" height="86"></td>
+ <td><a href="../index.htm"><font face="Arial" color="#FFFFFF"><big>Home</big></font></a></td>
+ <td><a href="../libs/libraries.htm"><font face="Arial" color="#FFFFFF"><big>Libraries</big></font></a></td>
+ <td><a href="../people/people.htm"><font face="Arial" color="#FFFFFF"><big>People</big></font></a></td>
+ <td><a href="faq.htm"><font face="Arial" color="#FFFFFF"><big>FAQ</big></font></a></td>
+ <td><a href="index.htm"><font face="Arial" color="#FFFFFF"><big>More</big></font></a></td>
+ </tr>
+</table>
+<h1>Boost Test Policies and Protocols</h1>
+<p>The Boost libraries are intended to be both reliable and portable.&nbsp;
+Every experienced programmer knows that means each library must be tested against a suitable number of test cases, on a wide range of platforms,
+and then tested again (regression tested) every time a change is made and before
+every release.&nbsp;</p>
+<p>&quot;Quality assurance based on a wide range of targeted tests&quot; as one
+of the key answers to <a href="http://oldwww.comlab.ox.ac.uk/oucl/people/tony.hoare.html">C.A.R
+Hoare's</a> question <a href="http://oldwww.comlab.ox.ac.uk/oucl/users/tony.hoare/icse18.html">&quot;How
+did software get so reliable without proof.&quot;</a></p>
+<h2>Regression test</h2>
+<p>Boost uses an automatic <a href="regression.html"> regression test suite</a> which generates HTML <a href="../status/compiler_status.html#Compiler Status Tables">compiler
+status tables</a>.</p>
+<h2>Test Policy</h2>
+<h3>Required</h3>
+<ul>
+ <li>Every Boost library should supply one or more suitable test programs to be
+ exercised by the Boost <a href="regression.html"> regression test suite</a>.&nbsp; In addition to
+ the usual compile-link-run tests expecting successful completion,
+ compile-only or compile-and-link-only tests may be performed, and success
+ for the test may be defined as failure of the steps.</li>
+ <li>Test program execution must report errors by returning a non-zero value.&nbsp; They
+ may also write to stdout or stderr, but that output should be relatively
+ brief.&nbsp; Regardless of other output, a non-zero return value is the only
+ way the regression test framework will recognize an error has
+ occurred.&nbsp;Note that test programs to be included in the status tables must
+ compile, link, and run quickly since the tests are executed many, many,
+ times.</li>
+ <li>Libraries with time consuming tests should be divided into a
+ fast-execution basic test program for the status tables, and a separate
+ full-coverage test program for exhaustive test cases.&nbsp; The basic test
+ should concentrate on compilation issues so that the status tables
+ accurately reflect the library's likelihood of correct compilation on a
+ platform.</li>
+ <li>If for any reason the usual test policies do not apply to a particular
+ library, an alternate test strategy must be implemented. &nbsp;&nbsp;</li>
+</ul>
+<h3>Optional</h3>
+<ul>
+ <li>Use the Boost Test Library for the construction of simple tests.</li>
+ <li>[Planned] Use the Boost Unit Test Library for the construction of more complex tests
+ and test suites.</li>
+ <li>The Boost Program Execution Library is also available for very simple
+ tests, but the Boost Test Library is much preferred even for very simple
+ tests.</li>
+</ul>
+<h2>Suggested Protocol for Fixing Bugs or Adding Features.</h2>
+<ul>
+ <li>First, add regression test cases that detects the bug or tests the
+ feature. Sometimes adding one case suggests similar untested cases, and they
+ are added too.</li>
+ <li>Second, for bugs, run the regression test and verify that the bug is now
+ detected.</li>
+ <li>Third, then, and only then, fix the bug or add the feature.</li>
+ <li>Finally, rerun the full regression tests - sometimes the change breaks
+ something else.</li>
+</ul>
+<h2>History</h2>
+<p>The current regression test program was developed by Jens Maurer in December,
+2000. The original regression test concept and program, including the automatic
+generation of HTML compiler status tables, was developed by Beman Dawes in June,
+2000.</p>
+<h2>Acknowledgements</h2>
+<p>Written by Beman Dawes. Jens Maurer, Paul Moore, Gary Powell and Jeremy Siek contributed helpful suggestions.</p>
+<hr>
+<p>Revised <!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%d %B, %Y" startspan -->05 February, 2001<!--webbot bot="Timestamp" endspan i-checksum="40404" -->
+</p>
+<p>&nbsp;</p>
+<p>&nbsp;</p>
+
+</body>
+
+</html>
diff --git a/people/aleksey_gurtovoy.htm b/people/aleksey_gurtovoy.htm
new file mode 100644
index 0000000000..c358cd841f
--- /dev/null
+++ b/people/aleksey_gurtovoy.htm
@@ -0,0 +1,50 @@
+<html>
+
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
+<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
+<meta name="ProgId" content="FrontPage.Editor.Document">
+<title>Aleksey Gurtovoy</title>
+</head>
+
+<body bgcolor="#FFFFFF" text="#000000">
+
+<table border="1" bgcolor="#007F7F" cellpadding="2">
+ <tr>
+ <td bgcolor="#FFFFFF"><img src="../c++boost.gif" alt="c++boost.gif (8819 bytes)" width="277" height="86"></td>
+ <td><a href="../index.htm"><font face="Arial" color="#FFFFFF"><big>Home</big></font></a></td>
+ <td><a href="../libs/libraries.htm"><font face="Arial" color="#FFFFFF"><big>Libraries</big></font></a></td>
+ <td><a href="people.htm"><font face="Arial" color="#FFFFFF"><big>People</big></font></a></td>
+ <td><a href="../more/faq.htm"><font face="Arial" color="#FFFFFF"><big>FAQ</big></font></a></td>
+ <td><a href="../more/index.htm"><font face="Arial" color="#FFFFFF"><big>More</big></font></a></td>
+ </tr>
+</table>
+<p><a href="aleksey_gurtovoy.jpg"><img border="0" src="aleksey_gurtovoy_small.jpg" alt="aleksey_gurtovoy.jpg (12871 bytes)" align="left" hspace="10" vspace="5" width="100" height="120"></a></p>
+<p>Aleksey Gurtovoy is just a one Russian guy from Siberia, who now lives and
+works in the United States. He is a technical lead in a small software company <a href="http://www.meta-comm.com">MetaCommunications</a>,
+a job and people which have taught him so much.</p>
+<p>He was born in early 1977, has been in love with computers since 1989, and
+still has a lot of (exciting) ideas for his &quot;spare time&quot; in the next
+few years. The first computer he worked with was DEC PDP-11, and he still has a
+kind of nostalgia about this amazing machine. He graduated with honors from
+Krasnoyarsk Technical State University in 1998 with a Master Degree in Computer
+Science.</p>
+<p>While being acknowledged as a talented programmer, Aleksey tries to be a
+better engineer than he is now and hopes that reading good books will help him
+with that task. He reads a lot... One of his favorite books about his profession
+is 'The Mythical Man-Month' by Frederic P. Brooks, Jr.</p>
+<p>He has been working with C++ since 1993, he loves the language and wants to
+be involved in its progress. Sometimes you can come across his articles in the <a href="news:comp.lang.c++.moderated">comp.lang.c++.moderated</a>
+and <a href="news:comp.std.c++">comp.std.c++</a><a> newsgroups. The other
+numerous things Aleksey is interested in include patterns, object-oriented
+methodology and programming languages, organization of software development
+process and tools &amp; technologies which make programmer's life easier (e.g.
+compilers).</p>
+<p>He is not married, but he has in mind one great girl he hopes to be with
+someday.</p>
+<p>You can contact him by sending mail to </a><a href="mailto:alexy@meta-comm.com">alexy@meta-comm.com</a><a>.</p>
+</a>
+
+</body>
+
+</html>
diff --git a/people/aleksey_gurtovoy.jpg b/people/aleksey_gurtovoy.jpg
new file mode 100644
index 0000000000..fd49271502
--- /dev/null
+++ b/people/aleksey_gurtovoy.jpg
Binary files differ
diff --git a/people/aleksey_gurtovoy_small.jpg b/people/aleksey_gurtovoy_small.jpg
new file mode 100644
index 0000000000..65157fc9bf
--- /dev/null
+++ b/people/aleksey_gurtovoy_small.jpg
Binary files differ
diff --git a/people/beman_dawes.html b/people/beman_dawes.html
new file mode 100644
index 0000000000..9092448078
--- /dev/null
+++ b/people/beman_dawes.html
@@ -0,0 +1,37 @@
+<html>
+
+<head>
+<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
+<meta name="ProgId" content="FrontPage.Editor.Document">
+<title>Beman Dawes</title>
+</head>
+
+<body bgcolor="#FFFFFF" text="#000000">
+
+<table border="1" bgcolor="#007F7F" cellpadding="2">
+ <tr>
+ <td bgcolor="#FFFFFF"><img src="../c++boost.gif" alt="c++boost.gif (8819 bytes)" width="277" height="86"></td>
+ <td><a href="../index.htm"><font face="Arial" color="#FFFFFF"><big>Home</big></font></a></td>
+ <td><a href="../libs/libraries.htm"><font face="Arial" color="#FFFFFF"><big>Libraries</big></font></a></td>
+ <td><a href="people.htm"><font face="Arial" color="#FFFFFF"><big>People</big></font></a></td>
+ <td><a href="../more/faq.htm"><font face="Arial" color="#FFFFFF"><big>FAQ</big></font></a></td>
+ <td><a href="../more/index.htm"><font face="Arial" color="#FFFFFF"><big>More</big></font></a></td>
+ </tr>
+</table>
+<p><a href="beman_dawes.jpg"><img src="beman_dawes_small.jpg" alt="beman_dawes.jpg (62536 bytes)" border="0" align="left" hspace="10" vspace="5" width="100" height="133"></a>
+Beman Dawes is a software developer from Virginia in the United States and the
+founder of boost.org.</p>
+<p>He is the author of the StreetQuick® geographic atlas library used by
+digital map publishers to help people get really, really, lost.</p>
+<p>He wrote his first computer program 40 years ago, and does not mourn the
+passing of <a href="http://www.mta.ca/~amiller/ibm650/ibm650.htm">bi-quinary</a>
+arithmetic.</p>
+<p>Beman has been a voting member of the ANSI/ISO C++ Standards Committee since
+1992, and chaired the Library Working Group for five years.</p>
+<p>He enjoys travel, sailing, hiking, and biking. He is married, and he and his
+wife have three cats.</p>
+<p>Email: <a href="mailto:bdawes@acm.org">bdawes@acm.org</a></p>
+
+</body>
+
+</html>
diff --git a/people/beman_dawes.jpg b/people/beman_dawes.jpg
new file mode 100644
index 0000000000..0c871cf3ab
--- /dev/null
+++ b/people/beman_dawes.jpg
Binary files differ
diff --git a/people/beman_dawes_small.jpg b/people/beman_dawes_small.jpg
new file mode 100644
index 0000000000..69db86240c
--- /dev/null
+++ b/people/beman_dawes_small.jpg
Binary files differ
diff --git a/people/darin_adler.htm b/people/darin_adler.htm
new file mode 100644
index 0000000000..b2f7e4f86f
--- /dev/null
+++ b/people/darin_adler.htm
@@ -0,0 +1,48 @@
+<html>
+
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
+<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
+<meta name="ProgId" content="FrontPage.Editor.Document">
+<title>Darin Adler</title>
+</head>
+
+<body>
+
+<table border="1" bgcolor="#007F7F" cellpadding="2">
+ <tr>
+ <td bgcolor="#FFFFFF"><img src="../c++boost.gif" alt="c++boost.gif (8819 bytes)" width="277" height="86"></td>
+ <td><a href="../index.htm"><font face="Arial" color="#FFFFFF"><big>Home</big></font></a></td>
+ <td><a href="../libs/libraries.htm"><font face="Arial" color="#FFFFFF"><big>Libraries</big></font></a></td>
+ <td><a href="people.htm"><font face="Arial" color="#FFFFFF"><big>People</big></font></a></td>
+ <td><a href="../more/faq.htm"><font face="Arial" color="#FFFFFF"><big>FAQ</big></font></a></td>
+ <td><a href="../more/index.htm"><font face="Arial" color="#FFFFFF"><big>More</big></font></a></td>
+ </tr>
+</table>
+<p><a href="darin_adler.jpg"><img border="0" src="darin_adler_small.jpg" alt="darin_adler.jpg (30416 bytes)" align="left" hspace="10" vspace="5" width="100" height="135"></a>Darin Adler has been programming computers since 1976. He loves to do it.</p>
+<p>His first major professional experience was at <a href="http://apple.com">Apple
+Computer</a>. In 1988 he led the team that rewrote the Macintosh Finder in C++.
+Before that project was completed, he was shanghaied to be the technical lead
+for the System 7 project (these days they would call it &quot;Mac OS 7&quot;).
+The group he formed to help him do that, the Blue Meanies, is still a <a href="http://www.spies.com/~greg/bluemeanies.html">legend</a>
+in the Apple community.</p>
+<p>Since Apple, Darin has worked at <a href="http://www.generalmagic.com">General
+Magic</a> as an architect of the <a href="http://www.google.com/search?q=Magic+Cap">Magic
+Cap</a> OS, used the moniker <a href="http://bentspoon.com">Bent Spoon Software</a>
+to do consulting, and helped start <a href="http://www.eazel.com">Eazel</a>, a
+company that is working to make Linux easier to use. Since 1997, he has worked
+from his home in Los Angeles, CA, collaborating with clients and coworkers in
+other locations.</p>
+<p>He prefers to use and program Macintosh computers with C++. But Eazel's
+mission to make Linux easier to use is best accomplished with a non-Macintosh
+PC. (That is why Darin is sitting in front of <a href="darin_adler.jpg">two computers</a>.)
+The other people working on the <a href="http://www.gnome.org">GNOME</a> project
+don't like C++, so he's writing a lot of C code these days.</p>
+<p>The <a href="darin_adler.jpg">larger version</a> of his picture shows him hard at
+work with his C++ guru, his daughter Sophia.</p>
+<p>He has hobbies and stuff but you don't want to read about that here.</p>
+<p>You can contact him by sending mail to <a href="mailto:darin@bentspoon.com">darin@bentspoon.com</a>.</p>
+
+</body>
+
+</html>
diff --git a/people/darin_adler.jpg b/people/darin_adler.jpg
new file mode 100644
index 0000000000..8a17394ddb
--- /dev/null
+++ b/people/darin_adler.jpg
Binary files differ
diff --git a/people/darin_adler_small.jpg b/people/darin_adler_small.jpg
new file mode 100644
index 0000000000..2b7771d95f
--- /dev/null
+++ b/people/darin_adler_small.jpg
Binary files differ
diff --git a/people/dave_abrahams.htm b/people/dave_abrahams.htm
new file mode 100644
index 0000000000..06de18bdb2
--- /dev/null
+++ b/people/dave_abrahams.htm
@@ -0,0 +1,29 @@
+<html>
+
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
+<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
+<meta name="ProgId" content="FrontPage.Editor.Document">
+<title>Dave Abrahams</title>
+</head>
+
+<body bgcolor="#FFFFFF" text="#000000">
+
+<table border="1" bgcolor="#007F7F" cellpadding="2">
+ <tr>
+ <td bgcolor="#FFFFFF"><img src="../c++boost.gif" alt="c++boost.gif (8819 bytes)" width="277" height="86"></td>
+ <td><a href="../index.htm"><font face="Arial" color="#FFFFFF"><big>Home</big></font></a></td>
+ <td><a href="../libs/libraries.htm"><font face="Arial" color="#FFFFFF"><big>Libraries</big></font></a></td>
+ <td><a href="people.htm"><font face="Arial" color="#FFFFFF"><big>People</big></font></a></td>
+ <td><a href="../more/faq.htm"><font face="Arial" color="#FFFFFF"><big>FAQ</big></font></a></td>
+ <td><a href="../more/index.htm"><font face="Arial" color="#FFFFFF"><big>More</big></font></a></td>
+ </tr>
+</table>
+<p><a href="dave_abrahams.jpg"><img src="dave_abrahams_small.jpg" alt="dave_abrahams.jpg (30926 bytes)"
+border="0" align="left" hspace="10" vspace="5" width="100" height="75"></a>
+Dave Abrahams often shows up at C++ standards committee meetings on a bicycle.</p>
+<p>Beyond that, we will just have to wait until he sends in a biography.</p>
+
+</body>
+
+</html>
diff --git a/people/dave_abrahams.jpg b/people/dave_abrahams.jpg
new file mode 100644
index 0000000000..ff45c4c306
--- /dev/null
+++ b/people/dave_abrahams.jpg
Binary files differ
diff --git a/people/dave_abrahams_small.jpg b/people/dave_abrahams_small.jpg
new file mode 100644
index 0000000000..ebc7077400
--- /dev/null
+++ b/people/dave_abrahams_small.jpg
Binary files differ
diff --git a/people/dietmar_kuehl.htm b/people/dietmar_kuehl.htm
new file mode 100644
index 0000000000..276b1be514
--- /dev/null
+++ b/people/dietmar_kuehl.htm
@@ -0,0 +1,42 @@
+<html>
+
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<title>Dietmar Kuehl </title>
+<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
+</head>
+
+<body bgcolor="#FFFFFF" text="#000000">
+
+<table border="1" bgcolor="#007F7F" cellpadding="2">
+ <tr>
+ <td bgcolor="#FFFFFF"><img src="../c++boost.gif" alt="c++boost.gif (8819 bytes)" WIDTH="277" HEIGHT="86"></td>
+ <td><a href="../index.htm"><font face="Arial" color="#FFFFFF"><big>Home </big></font></a></td>
+ <td><a href="../libs/libraries.htm"><font face="Arial" color="#FFFFFF"><big>Libraries </big></font></a></td>
+ <td><a href="people.htm"><font face="Arial" color="#FFFFFF"><big>People </big></font></a></td>
+ <td><a href="../more/faq.htm"><font face="Arial" color="#FFFFFF"><big>FAQ </big></font></a></td>
+ <td><a href="../more/index.htm"><font face="Arial" color="#FFFFFF"><big>More </big></font></a></td>
+ </tr>
+</table>
+
+<p><a href="dietmar_kuehl.jpg"><img src="dietmar_kuehl_small.jpg" hspace="10" vspace="5" alt="dietmar_kuehl.jpg (57821 bytes)" border="0" align="left" WIDTH="100" HEIGHT="133"></a>Dietmar Kuehl (the
+&quot;ue&quot; is actually a &quot;u-umlaut&quot;, ie. one of those funny German
+characters which has two dots above it) was fork(2)ed in early 1968.</p>
+
+<p>He visited school more or less successfully from 1973 to 1987. In 1987 he started to
+study at the Technical University of Berlin. He finished his studies in 1997 with a Diplom
+(roughly the German equivalent of a masters) in Mathematics. His thesis was &quot;Design
+Pattern for the Implementation of Graph Algorithms&quot;; strike the &quot;Design
+Pattern&quot; and put in &quot;Generic&quot; somehow to get an idea of the main topic. The
+thesis is available from <a href="ftp://ftp.informatik.uni-konstanz.de/pub/algo/personal/kuehl/da.ps.gz">ftp://ftp.informatik.uni-konstanz.de/pub/algo/personal/kuehl/da.ps.gz</a>.</p>
+
+<p>Since 1997 he has worked as consultant for a small company called Claas Solutions (the
+&quot;aa&quot; is no typo), mainly working for major German banks. Since late 1995 Dietmar
+Kuehl has been one of the moderators of the newsgroup <a href="news:comp.lang.c++.moderated">comp.lang.c++.moderated</a>. He is active on the C++
+Standards committee.</p>
+
+<p>Email: <a href="mailto:dietmar.kuehl@claas-solutions.de">dietmar.kuehl@claas-solutions.de</a></p>
+
+<p>Home page:&nbsp; <a href="http://www.claas-solutions.de/kuehl/">http://www.claas-solutions.de/kuehl/</a></p>
+</body>
+</html>
diff --git a/people/dietmar_kuehl.jpg b/people/dietmar_kuehl.jpg
new file mode 100644
index 0000000000..c97f54e4fe
--- /dev/null
+++ b/people/dietmar_kuehl.jpg
Binary files differ
diff --git a/people/dietmar_kuehl_small.jpg b/people/dietmar_kuehl_small.jpg
new file mode 100644
index 0000000000..ac63acaf51
--- /dev/null
+++ b/people/dietmar_kuehl_small.jpg
Binary files differ
diff --git a/people/ed_brey.htm b/people/ed_brey.htm
new file mode 100644
index 0000000000..d33e9f95df
--- /dev/null
+++ b/people/ed_brey.htm
@@ -0,0 +1,51 @@
+<html>
+
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
+<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
+<meta name="ProgId" content="FrontPage.Editor.Document">
+<title>Ed Brey</title>
+</head>
+
+<body bgcolor="#FFFFFF" text="#000000">
+
+<table border="1" bgcolor="#007F7F" cellpadding="2">
+ <tr>
+ <td bgcolor="#FFFFFF"><img src="../c++boost.gif" alt="c++boost.gif (8819 bytes)" width="277" height="86"></td>
+ <td><a href="../index.htm"><font face="Arial" color="#FFFFFF"><big>Home</big></font></a></td>
+ <td><a href="../libs/libraries.htm"><font face="Arial" color="#FFFFFF"><big>Libraries</big></font></a></td>
+ <td><a href="people.htm"><font face="Arial" color="#FFFFFF"><big>People</big></font></a></td>
+ <td><a href="../more/faq.htm"><font face="Arial" color="#FFFFFF"><big>FAQ</big></font></a></td>
+ <td><a href="../more/index.htm"><font face="Arial" color="#FFFFFF"><big>More</big></font></a></td>
+ </tr>
+</table>
+<p><a href="ed_brey.jpg"><img src="ed_brey_small.jpg" alt="ed_brey.jpg" border="0" align="left" hspace="10" vspace="5" width="100" height="133"></a>
+Ed Brey lives in Menomonee Falls, Wisconsin, a village outside of Milwaukee. In
+the summertime, he likes to play tennis with his fiancée, and in the winter, if
+there is enough snow, he likes to go tobogganing or ice-skating. If it is not
+nice enough outside for either of those, he plays on the piano. Although Ed
+enjoys doing those activities, most of his time is currently spent at work and
+at home studying. He works at <a href="http://www.eaton.com">Eaton Corporation</a>
+in Milwaukee and is working on his masters degree in computer engineering
+through <a href="http://www.ntu.edu">NTU</a>.
+<p>Ed started working for Eaton as part of <a href="http://www.mu.edu">Marquette
+University</a>'s engineering co-op program. Upon graduation in 1995 from
+Marquette with a BS in electrical and computer engineering, he was hired on
+full-time at Eaton. At Eaton, Ed has been primarily focused on embedded system
+design and programming in the industrial controls industry. Recently, however,
+he has delved into writing a near-real-time database engine running under
+Windows.
+<p>Ed has held programming as a pastime since his grade school days, when he
+wrote a babysitting invoicing program. Soon after, he wrote a game inspired by
+the TV game show &quot;Press Your Luck&quot;. Ever since, programming languages
+and concepts, along with finding ways to improve the art and science of coding
+software, have always peeked his interest.
+<p>Lastly, Ed has managed to retain his perspective. As fun as computers and
+programming are, Ed's true love in his life is his wife Beth.</p>
+<hr>
+<p>Email: <a href="mailto:brey@ductape.net">brey@ductape.net</a>
+<p>Home page: <a href="http://www.cc.edu/~eschmied/">http://ww.cc.edu/~eschmied/</a>
+
+</body>
+
+</html>
diff --git a/people/ed_brey.jpg b/people/ed_brey.jpg
new file mode 100644
index 0000000000..3a37894726
--- /dev/null
+++ b/people/ed_brey.jpg
Binary files differ
diff --git a/people/ed_brey_small.jpg b/people/ed_brey_small.jpg
new file mode 100644
index 0000000000..bf7849a914
--- /dev/null
+++ b/people/ed_brey_small.jpg
Binary files differ
diff --git a/people/gary_powell.htm b/people/gary_powell.htm
new file mode 100644
index 0000000000..964eb4a916
--- /dev/null
+++ b/people/gary_powell.htm
@@ -0,0 +1,31 @@
+<html>
+
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
+<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
+<meta name="ProgId" content="FrontPage.Editor.Document">
+<title>Gary Powell</title>
+</head>
+
+<body bgcolor="#FFFFFF" text="#000000">
+
+<table border="1" bgcolor="#007F7F" cellpadding="2">
+ <tr>
+ <td bgcolor="#FFFFFF"><img src="../c++boost.gif" alt="c++boost.gif (8819 bytes)" width="277" height="86"></td>
+ <td><a href="../index.htm"><font face="Arial" color="#FFFFFF"><big>Home</big></font></a></td>
+ <td><a href="../libs/libraries.htm"><font face="Arial" color="#FFFFFF"><big>Libraries</big></font></a></td>
+ <td><a href="people.htm"><font face="Arial" color="#FFFFFF"><big>People</big></font></a></td>
+ <td><a href="../more/faq.htm"><font face="Arial" color="#FFFFFF"><big>FAQ</big></font></a></td>
+ <td><a href="../more/index.htm"><font face="Arial" color="#FFFFFF"><big>More</big></font></a></td>
+ </tr>
+</table>
+<p><a href="gary_powell.jpg"><img border="0" src="gary_powell_small.jpg" alt="gary_powell.jpg (13577 bytes)" align="left" hspace="10" vspace="5" width="100" height="133"></a>Gary Powell has been messing around with C++ since '87 when he dreamed about adding his own operators to the language. Since then he's been busy
+overloading everything in sight, and working on bringing functional programming to C++.</p>
+<p>He currently works for Sierra On-line <a href="http://www.sierra.com">http://www.sierra.com</a> a division of
+Havas Interactive, a wholly owned subsidiary of Vivedi Universal of France, <a href="http://www.vivendi.com">http://www.vivendi.com</a> as a game programmer where he writes AI.</p>
+<p>He can be reached at <a href="mailto:gary.powell@sierra.com">gary.powell@sierra.com</a> but don't ask him how to solve
+the riddle of the left handed troll.</p>
+
+</body>
+
+</html>
diff --git a/people/gary_powell.jpg b/people/gary_powell.jpg
new file mode 100644
index 0000000000..349ad1cdbe
--- /dev/null
+++ b/people/gary_powell.jpg
Binary files differ
diff --git a/people/gary_powell_small.jpg b/people/gary_powell_small.jpg
new file mode 100644
index 0000000000..64ed30e619
--- /dev/null
+++ b/people/gary_powell_small.jpg
Binary files differ
diff --git a/people/gavin_collings.htm b/people/gavin_collings.htm
new file mode 100644
index 0000000000..a5c02954c5
--- /dev/null
+++ b/people/gavin_collings.htm
@@ -0,0 +1,31 @@
+<html>
+
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
+<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
+<meta name="ProgId" content="FrontPage.Editor.Document">
+<title>Gavin Collings</title>
+</head>
+
+<body bgcolor="#FFFFFF" text="#000000">
+
+<table border="1" bgcolor="#007F7F" cellpadding="2">
+ <tr>
+ <td bgcolor="#FFFFFF"><img src="../c++boost.gif" alt="c++boost.gif (8819 bytes)" WIDTH="277" HEIGHT="86"></td>
+ <td><a href="../index.htm"><font face="Arial" color="#FFFFFF"><big>Home</big></font></a></td>
+ <td><a href="../libs/libraries.htm"><font face="Arial" color="#FFFFFF"><big>Libraries</big></font></a></td>
+ <td><a href="people.htm"><font face="Arial" color="#FFFFFF"><big>People</big></font></a></td>
+ <td><a href="../more/faq.htm"><font face="Arial" color="#FFFFFF"><big>FAQ</big></font></a></td>
+ <td><a href="../more/index.htm"><font face="Arial" color="#FFFFFF"><big>More</big></font></a></td>
+ </tr>
+</table>
+<p><img border="0" src="gavin_collings_small.jpg" alt="gavin_collings.jpg (16786 bytes)" align="left" hspace="10" vspace="5" width="100" height="137">Gavin Collings was born and bred in Wiltshire in the UK. After spending the
+1960s in childish pursuits, he spent the 1970s at school becoming ever more fascinated with the mysteries of physics. This he went on to study at St
+John's College, Cambridge until 1985, at which time he entered the world of employment.</p>
+<p>After early work with other languages, he became involved with C++ in the early 1990s and now works as consultant, not far from his original home, in
+Gloucestershire.</p>
+<p>He enjoys playing the piano, walking in the local countryside, playing 5-a-side (indoor soccer), and sailing.</p>
+
+</body>
+
+</html>
diff --git a/people/gavin_collings.jpg b/people/gavin_collings.jpg
new file mode 100644
index 0000000000..b3ef794763
--- /dev/null
+++ b/people/gavin_collings.jpg
Binary files differ
diff --git a/people/gavin_collings_small.jpg b/people/gavin_collings_small.jpg
new file mode 100644
index 0000000000..f9abc3b792
--- /dev/null
+++ b/people/gavin_collings_small.jpg
Binary files differ
diff --git a/people/greg_colvin.htm b/people/greg_colvin.htm
new file mode 100644
index 0000000000..85974b487a
--- /dev/null
+++ b/people/greg_colvin.htm
@@ -0,0 +1,28 @@
+<html>
+
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<title>Greg Colvin</title>
+<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
+</head>
+
+<body bgcolor="#FFFFFF" text="#000000">
+
+<table border="1" bgcolor="#007F7F" cellpadding="2">
+ <tr>
+ <td bgcolor="#FFFFFF"><img src="../c++boost.gif" alt="c++boost.gif (8819 bytes)" WIDTH="277" HEIGHT="86"></td>
+ <td><a href="../index.htm"><font face="Arial" color="#FFFFFF"><big>Home </big></font></a></td>
+ <td><a href="../libs/libraries.htm"><font face="Arial" color="#FFFFFF"><big>Libraries </big></font></a></td>
+ <td><a href="people.htm"><font face="Arial" color="#FFFFFF"><big>People </big></font></a></td>
+ <td><a href="../more/faq.htm"><font face="Arial" color="#FFFFFF"><big>FAQ </big></font></a></td>
+ <td><a href="../more/index.htm"><font face="Arial" color="#FFFFFF"><big>More </big></font></a></td>
+ </tr>
+</table>
+
+<p><a href="greg_colvin.jpg"><img src="greg_colvin_small.jpg" alt="greg_colvin.jpg (52k bytes)" border="0" align="left" hspace="10" vspace="5" WIDTH="100" HEIGHT="133"></a> Dr.
+Greg Colvin has been hacking happily since 1972. He is a member of the ANSI/ISO C++
+standards committee and a Principal Member of Technical Staff with the Java Products Group
+at Oracle Corporation. In his spare time he plays apocalyptic electric blues guitar in his
+Colorado, USA home studio.</p>
+</body>
+</html>
diff --git a/people/greg_colvin.jpg b/people/greg_colvin.jpg
new file mode 100644
index 0000000000..8bde68f374
--- /dev/null
+++ b/people/greg_colvin.jpg
Binary files differ
diff --git a/people/greg_colvin_small.jpg b/people/greg_colvin_small.jpg
new file mode 100644
index 0000000000..3c82cbc5bb
--- /dev/null
+++ b/people/greg_colvin_small.jpg
Binary files differ
diff --git a/people/howard_hinnant.htm b/people/howard_hinnant.htm
new file mode 100644
index 0000000000..027b84f788
--- /dev/null
+++ b/people/howard_hinnant.htm
@@ -0,0 +1,34 @@
+<html>
+
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
+<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
+<meta name="ProgId" content="FrontPage.Editor.Document">
+<title>Howard Hinnant</title>
+</head>
+
+<body bgcolor="#FFFFFF" text="#000000">
+
+<table border="1" bgcolor="#007F7F" cellpadding="2">
+ <tr>
+ <td bgcolor="#FFFFFF"><img src="../c++boost.gif" alt="c++boost.gif (8819 bytes)" width="277" height="86"></td>
+ <td><a href="../index.htm"><font face="Arial" color="#FFFFFF"><big>Home </big></font></a></td>
+ <td><a href="../libs/libraries.htm"><font face="Arial" color="#FFFFFF"><big>Libraries </big></font></a></td>
+ <td><a href="people.htm"><font face="Arial" color="#FFFFFF"><big>People </big></font></a></td>
+ <td><a href="../more/faq.htm"><font face="Arial" color="#FFFFFF"><big>FAQ </big></font></a></td>
+ <td><a href="../more/index.htm"><font face="Arial" color="#FFFFFF"><big>More </big></font></a></td>
+ </tr>
+</table>
+
+<p><a href="howard_hinnant.jpg"><img border="0" src="howard_hinnant_small.jpg" align="left" hspace="10" vspace="5" alt="howard_hinnant.jpg (19817 bytes)" width="100" height="97"></a>When
+Howard Hinnant is not monkeying around, he is the principal author of the
+Metrowerks CodeWarrior C++ library. He is also a member of the C++ Standards
+committee.</p>
+<p>Howard is married with four children, two dogs, one cat, a rabbit, an
+undetermined number of rodents (which the cat ignores), and ... well, we're
+really not sure what else. When not sitting in front of his computer, Howard
+enjoys snow skiing and ... more, snow skiing.</p>
+
+</body>
+
+</html>
diff --git a/people/howard_hinnant.jpg b/people/howard_hinnant.jpg
new file mode 100644
index 0000000000..a63a446b47
--- /dev/null
+++ b/people/howard_hinnant.jpg
Binary files differ
diff --git a/people/howard_hinnant_small.jpg b/people/howard_hinnant_small.jpg
new file mode 100644
index 0000000000..373892bb51
--- /dev/null
+++ b/people/howard_hinnant_small.jpg
Binary files differ
diff --git a/people/jens_maurer.htm b/people/jens_maurer.htm
new file mode 100644
index 0000000000..cf284bccf1
--- /dev/null
+++ b/people/jens_maurer.htm
@@ -0,0 +1,39 @@
+<html>
+
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
+<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
+<meta name="ProgId" content="FrontPage.Editor.Document">
+<title>Jens Maurer</title>
+</head>
+
+<body bgcolor="#FFFFFF" text="#000000">
+
+<table border="1" bgcolor="#007F7F" cellpadding="2">
+ <tr>
+ <td bgcolor="#FFFFFF"><img src="../c++boost.gif" alt="c++boost.gif (8819 bytes)" width="277" height="86"></td>
+ <td><a href="../index.htm"><font face="Arial" color="#FFFFFF"><big>Home</big></font></a></td>
+ <td><a href="../libs/libraries.htm"><font face="Arial" color="#FFFFFF"><big>Libraries</big></font></a></td>
+ <td><a href="people.htm"><font face="Arial" color="#FFFFFF"><big>People</big></font></a></td>
+ <td><a href="../more/faq.htm"><font face="Arial" color="#FFFFFF"><big>FAQ</big></font></a></td>
+ <td><a href="../more/index.htm"><font face="Arial" color="#FFFFFF"><big>More</big></font></a></td>
+ </tr>
+</table>
+<p><a href="jens_maurer.jpg"><img border="0" src="jens_maurer_small.jpg" alt="jens_maurer.jpg (15698 bytes)" hspace="10" vspace="5" align="left" width="100" height="124"></a>
+Jens Maurer is a software developer from Germany who lives close to
+Frankfurt/Main. He was born in 1973 and hasn't died yet.</p>
+<p>He has worked for a multimedia company programming home-banking applications,
+CGI scripts and Java applications. He also helped program some simulation
+systems for long-term decision support to aid businessmen in arguing about
+company investments.</p>
+<p>He is neither married nor does he have a girl friend, but asked his
+colleagues to find one for him.</p>
+<p>In his spare time, he likes visiting foreign countries but dislikes getting
+there in uncomfortable airplane seats. On random week-ends, he enjoys
+participating in historic dance courses (without a costume, of course).
+Sometimes, he needs fresh air and goes for a walk.&nbsp;</p>
+<p>Email: <a href="mailto:Jens.Maurer@gmx.net">Jens.Maurer@gmx.net</a></p>
+
+</body>
+
+</html>
diff --git a/people/jens_maurer.jpg b/people/jens_maurer.jpg
new file mode 100644
index 0000000000..2dc21b42f5
--- /dev/null
+++ b/people/jens_maurer.jpg
Binary files differ
diff --git a/people/jens_maurer_small.jpg b/people/jens_maurer_small.jpg
new file mode 100644
index 0000000000..6cdc572db8
--- /dev/null
+++ b/people/jens_maurer_small.jpg
Binary files differ
diff --git a/people/jeremy_siek.htm b/people/jeremy_siek.htm
new file mode 100644
index 0000000000..45aca66c4f
--- /dev/null
+++ b/people/jeremy_siek.htm
@@ -0,0 +1,40 @@
+<html>
+
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
+<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
+<meta name="ProgId" content="FrontPage.Editor.Document">
+<title>Jeremy Siek</title>
+</head>
+
+<body bgcolor="#FFFFFF" text="#000000">
+
+<table border="1" bgcolor="#007F7F" cellpadding="2">
+ <tr>
+ <td bgcolor="#FFFFFF"><img src="../c++boost.gif" alt="c++boost.gif (8819 bytes)" width="277" height="86"></td>
+ <td><a href="../index.htm"><font face="Arial" color="#FFFFFF"><big>Home </big></font></a></td>
+ <td><a href="../libs/libraries.htm"><font face="Arial" color="#FFFFFF"><big>Libraries </big></font></a></td>
+ <td><a href="people.htm"><font face="Arial" color="#FFFFFF"><big>People </big></font></a></td>
+ <td><a href="../more/faq.htm"><font face="Arial" color="#FFFFFF"><big>FAQ </big></font></a></td>
+ <td><a href="../more/index.htm"><font face="Arial" color="#FFFFFF"><big>More </big></font></a></td>
+ </tr>
+</table>
+
+<p><a href="jeremy_siek.jpg"><img border="0"
+src="jeremy_siek_small.jpg" alt="jeremy_siek.jpg (12867 bytes)"
+align="left" hspace="10" vspace="5" width="100"
+height="133"></a>Jeremy Siek is a Ph.D. student at Univ. of Notre Dame.<br>
+<br>
+He is the author of the Matrix Template Library (MTL), and helped
+design the Generic Graph Component Library, which is now the Boost
+Graph Library (BGL).<br>
+<br>
+Once in a while Jeremy "comes up for air" and enjoys fencing, hiking, skiing, and reading. He's also been spotted at a few fightin' irish
+tailgaters (BYOB).<br>
+<br>
+Jeremy has an intense fear for the ancient dark forests where dusty decks thrive and devour programmers, places where the light of abstraction
+has not yet reached.</p>
+
+</body>
+
+</html>
diff --git a/people/jeremy_siek.jpg b/people/jeremy_siek.jpg
new file mode 100644
index 0000000000..2b8115ce20
--- /dev/null
+++ b/people/jeremy_siek.jpg
Binary files differ
diff --git a/people/jeremy_siek_small.jpg b/people/jeremy_siek_small.jpg
new file mode 100644
index 0000000000..514e1bdb26
--- /dev/null
+++ b/people/jeremy_siek_small.jpg
Binary files differ
diff --git a/people/john_maddock.htm b/people/john_maddock.htm
new file mode 100644
index 0000000000..66adc41203
--- /dev/null
+++ b/people/john_maddock.htm
@@ -0,0 +1,41 @@
+<html>
+
+<head>
+<meta http-equiv="Content-Type"
+content="text/html; charset=iso-8859-1">
+<meta name="GENERATOR" content="Microsoft FrontPage Express 2.0">
+<title>John Maddock</title>
+</head>
+
+<body bgcolor="#FFFFFF" text="#000000">
+
+<table border="1" cellpadding="2" bgcolor="#007F7F">
+ <tr>
+ <td bgcolor="#FFFFFF"><img src="../c++boost.gif"
+ alt="c++boost.gif (8819 bytes)" width="277" height="86"></td>
+ <td><a href="../index.htm"><font color="#FFFFFF" size="4"
+ face="Arial">Home </font></a></td>
+ <td><a href="../libs/libraries.htm"><font color="#FFFFFF"
+ size="4" face="Arial">Libraries </font></a></td>
+ <td><a href="people.htm"><font color="#FFFFFF"
+ size="4" face="Arial">People </font></a></td>
+ <td><a href="../more/faq.htm"><font color="#FFFFFF"
+ size="4" face="Arial">FAQ </font></a></td>
+ <td><a href="../more/index.htm"><font color="#FFFFFF"
+ size="4" face="Arial">More </font></a></td>
+ </tr>
+</table>
+
+<p><a href="john_maddock.jpg"><img src="john_maddock_small.jpg"
+alt="john_maddock.jpg (14611bytes)" align="left" border="0"
+hspace="10" vspace="5" width="100" height="133"></a> John Maddock
+is a software developer from England and holds a PhD in Chemistry,
+but found that computers smell less and explode less often!</p>
+
+<p>John is the author of the <a
+href="http://ourworld.compuserve.com/homepages/John_Maddock/regexpp.htm">regex++
+regular expression package</a>, has an almost pathological
+interest in anything that &quot;can't be done&quot;, and can be
+contacted at <a href="mailto:John_Maddock@compuserve.com">John_Maddock@compuserve.com</a>.</p>
+</body>
+</html>
diff --git a/people/john_maddock.jpg b/people/john_maddock.jpg
new file mode 100644
index 0000000000..9aaa0c90ce
--- /dev/null
+++ b/people/john_maddock.jpg
Binary files differ
diff --git a/people/john_maddock_small.jpg b/people/john_maddock_small.jpg
new file mode 100644
index 0000000000..52368a68a8
--- /dev/null
+++ b/people/john_maddock_small.jpg
Binary files differ
diff --git a/people/kevlin_henney.htm b/people/kevlin_henney.htm
new file mode 100644
index 0000000000..4cef8af5cc
--- /dev/null
+++ b/people/kevlin_henney.htm
@@ -0,0 +1,49 @@
+<html>
+
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
+<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
+<meta name="ProgId" content="FrontPage.Editor.Document">
+<title>Kevlin Henney</title>
+</head>
+
+<body bgcolor="#FFFFFF" text="#000000">
+
+<table border="1" bgcolor="#007F7F" cellpadding="2">
+ <tr>
+ <td bgcolor="#FFFFFF"><img src="../c++boost.gif" alt="c++boost.gif (8819 bytes)" width="277" height="86"></td>
+ <td><a href="../index.htm"><font face="Arial" color="#FFFFFF"><big>Home </big></font></a></td>
+ <td><a href="../libs/libraries.htm"><font face="Arial" color="#FFFFFF"><big>Libraries </big></font></a></td>
+ <td><a href="people.htm"><font face="Arial" color="#FFFFFF"><big>People </big></font></a></td>
+ <td><a href="../more/faq.htm"><font face="Arial" color="#FFFFFF"><big>FAQ </big></font></a></td>
+ <td><a href="../more/index.htm"><font face="Arial" color="#FFFFFF"><big>More </big></font></a></td>
+ </tr>
+</table>
+
+<p><a href="kevlin_henney.jpg"><img border="0" src="kevlin_henney_small.jpg" alt="kevlin_henney.jpg (18107 bytes)" align="left" hspace="10" vspace="5" width="100" height="142"></a>
+Kevlin Henney (<a href="mailto:kevlin@curbralan.com">mailto:kevlin@curbralan.com</a>, <a href="http://www.curbralan.com">http://www.curbralan.com</a>)
+is an independent consultant and trainer based in the UK. He has developed and
+delivered training course material and consultancy on many aspects of OO
+development, which he has practiced across a number of domains for over a
+decade. His professional interests include patterns, OO and component based
+design, architecture, distributed object systems, C++, and Java. He is also a
+member of the BSI C++ standards committee.
+</p>
+
+<p>Now that writing code is no longer the core responsibility of his job, his
+non-professional interests seem to include the hacking associated with the
+aforementioned professional interests. However, never being one to keep
+something to himself (like C++'s relationship with C, this is regarded as both a
+strength and a weakness), he shares/inflicts (delete as necessary) his
+professional and non-professional development experiences with/on (ditto) others
+through writing articles and presenting tutorials, workshops and papers at
+conferences.</p>
+<p>He is married, and not just to his work. He and Carolyn have neither children
+nor pets, but he feels that the missing aggravation is made up for by a house
+that needs a great deal of work, requiring constant attention and feeding of
+money. The little spare time that remains to him is taken up with music,
+reading, pub appreciation, etc. Finally, although he enjoys writing, Kevlin is
+not really one for writing in the third person.</p>
+</body>
+
+</html>
diff --git a/people/kevlin_henney.jpg b/people/kevlin_henney.jpg
new file mode 100644
index 0000000000..1bdc12256f
--- /dev/null
+++ b/people/kevlin_henney.jpg
Binary files differ
diff --git a/people/kevlin_henney_small.jpg b/people/kevlin_henney_small.jpg
new file mode 100644
index 0000000000..348e6a0ac3
--- /dev/null
+++ b/people/kevlin_henney_small.jpg
Binary files differ
diff --git a/people/liequan_lee.htm b/people/liequan_lee.htm
new file mode 100644
index 0000000000..a885d91409
--- /dev/null
+++ b/people/liequan_lee.htm
@@ -0,0 +1,33 @@
+<html>
+
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
+<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
+<meta name="ProgId" content="FrontPage.Editor.Document">
+<title>Lie-Quan Lee</title>
+</head>
+
+<body bgcolor="#FFFFFF" text="#000000">
+
+<table border="1" bgcolor="#007F7F" cellpadding="2">
+ <tr>
+ <td bgcolor="#FFFFFF"><img src="../c++boost.gif" alt="c++boost.gif (8819 bytes)" width="277" height="86"></td>
+ <td><a href="../index.htm"><font face="Arial" color="#FFFFFF"><big>Home</big></font></a></td>
+ <td><a href="../libs/libraries.htm"><font face="Arial" color="#FFFFFF"><big>Libraries</big></font></a></td>
+ <td><a href="people.htm"><font face="Arial" color="#FFFFFF"><big>People</big></font></a></td>
+ <td><a href="../more/faq.htm"><font face="Arial" color="#FFFFFF"><big>FAQ</big></font></a></td>
+ <td><a href="../more/index.htm"><font face="Arial" color="#FFFFFF"><big>More</big></font></a></td>
+ </tr>
+</table>
+&nbsp;
+<p><a href="liequan_lee.jpg"><img border="0" src="liequan_lee_small.jpg" alt="liequan_lee.jpg (24165 bytes)" hspace="10" vspace="5" width="93" height="133" align="left"></a>Lie-Quan
+Lee, AKA Rich Lee, is a graduate stduent in Computer Science at University of
+Notre Dame. He is the author of the Generic Graph Component Library (GGCL).</p>
+<p>He has a strong desire of learning to disassemble and assemable any
+electrical appliances. He likes playing bridge but never had a chance to play it
+after he entered the wonderful world of computers.</p>
+<p>He can be contacted at llee1@lsc.nd.edu.</p>
+
+</body>
+
+</html>
diff --git a/people/liequan_lee.jpg b/people/liequan_lee.jpg
new file mode 100644
index 0000000000..a7e54f20b5
--- /dev/null
+++ b/people/liequan_lee.jpg
Binary files differ
diff --git a/people/liequan_lee_small.jpg b/people/liequan_lee_small.jpg
new file mode 100644
index 0000000000..af03f10a29
--- /dev/null
+++ b/people/liequan_lee_small.jpg
Binary files differ
diff --git a/people/mark_rodgers.htm b/people/mark_rodgers.htm
new file mode 100644
index 0000000000..27e6df3c1a
--- /dev/null
+++ b/people/mark_rodgers.htm
@@ -0,0 +1,36 @@
+<html>
+
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
+<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
+<meta name="ProgId" content="FrontPage.Editor.Document">
+<title>Mark Rodgers</title>
+</head>
+
+<body bgcolor="#FFFFFF" text="#000000">
+
+<table border="1" bgcolor="#007F7F" cellpadding="2">
+ <tr>
+ <td bgcolor="#FFFFFF"><img src="../c++boost.gif" alt="c++boost.gif (8819 bytes)" width="277" height="86"></td>
+ <td><a href="../index.htm"><font face="Arial" color="#FFFFFF"><big>Home</big></font></a></td>
+ <td><a href="../libs/libraries.htm"><font face="Arial" color="#FFFFFF"><big>Libraries</big></font></a></td>
+ <td><a href="people.htm"><font face="Arial" color="#FFFFFF"><big>People</big></font></a></td>
+ <td><a href="../more/faq.htm"><font face="Arial" color="#FFFFFF"><big>FAQ</big></font></a></td>
+ <td><a href="../more/index.htm"><font face="Arial" color="#FFFFFF"><big>More</big></font></a></td>
+ </tr>
+</table>
+<p><a href="mark_rodgers.jpg"><img border="0" src="mark_rodgers_small.jpg" alt="mark_rodgers.jpg (23035 bytes)" align="left" hspace="10" vspace="5" width="100" height="75"></a>Mark
+Rodgers lives in <a href="http://www.wcc.govt.nz/wellington/">Wellington</a>,
+the capital of <a href="http://www.govt.nz/aboutnz/profile.php3">New Zealand</a>,
+with his wife, Clare, and their son, Ronnie.</p>
+<p>He studied Computer Science at <a href="http://www.vuw.ac.nz">Victoria
+University of Wellington</a> from 1983 to 1986, completing a <nobr>B.Sc. (Hons).</nobr>
+He now works as consultant through his company, Cadenza New Zealand Ltd, and
+also markets Cadenza Drawing Board™, a CAD system he developed.</p>
+<p>Mark has been programming in C++ since about 1990, and loves every minute of
+it, but is continually amazed at how much more he still has to learn.</p>
+<p>You can contact Mark at <a href="mailto:mark.rodgers@cadenza.co.nz">mark.rodgers@cadenza.co.nz</a>.
+
+</body>
+
+</html>
diff --git a/people/mark_rodgers.jpg b/people/mark_rodgers.jpg
new file mode 100644
index 0000000000..0542e323a4
--- /dev/null
+++ b/people/mark_rodgers.jpg
Binary files differ
diff --git a/people/mark_rodgers_small.jpg b/people/mark_rodgers_small.jpg
new file mode 100644
index 0000000000..a4a34c768b
--- /dev/null
+++ b/people/mark_rodgers_small.jpg
Binary files differ
diff --git a/people/nicolai_josuttis.jpg b/people/nicolai_josuttis.jpg
new file mode 100644
index 0000000000..9cedc21cd2
--- /dev/null
+++ b/people/nicolai_josuttis.jpg
Binary files differ
diff --git a/people/nicolai_josuttis_small.jpg b/people/nicolai_josuttis_small.jpg
new file mode 100644
index 0000000000..28b828b692
--- /dev/null
+++ b/people/nicolai_josuttis_small.jpg
Binary files differ
diff --git a/people/paul_moore.htm b/people/paul_moore.htm
new file mode 100644
index 0000000000..de4b5c7729
--- /dev/null
+++ b/people/paul_moore.htm
@@ -0,0 +1,38 @@
+<html>
+
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
+<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
+<meta name="ProgId" content="FrontPage.Editor.Document">
+<title>Paul Moore</title>
+</head>
+
+<body bgcolor="#FFFFFF" text="#000000">
+
+<table border="1" bgcolor="#007F7F" cellpadding="2">
+ <tr>
+ <td bgcolor="#FFFFFF"><img src="../c++boost.gif" alt="c++boost.gif (8819 bytes)" width="277" height="86"></td>
+ <td><a href="../index.htm"><font face="Arial" color="#FFFFFF"><big>Home</big></font></a></td>
+ <td><a href="../libs/libraries.htm"><font face="Arial" color="#FFFFFF"><big>Libraries</big></font></a></td>
+ <td><a href="people.htm"><font face="Arial" color="#FFFFFF"><big>People</big></font></a></td>
+ <td><a href="../more/faq.htm"><font face="Arial" color="#FFFFFF"><big>FAQ</big></font></a></td>
+ <td><a href="../more/index.htm"><font face="Arial" color="#FFFFFF"><big>More</big></font></a></td>
+ </tr>
+</table>
+<p><a href="paul_moore.jpg"><img border="0" src="paul_moore_small.jpg" alt="paul_moore.jpg (12023 bytes)" align="left" hspace="10" vspace="5" width="100" height="81"></a>Paul
+Moore lives in Cheshire, England. He is married, with one son. His &quot;day
+job&quot; is as an Oracle DBA, but he writes C and C++ programs in his spare
+time.</p>
+<p>Paul started programming on Acorn's BBC Micro and RISC PC series of
+computers, but finally went mainstream and bought a PC, on which he now runs
+Windows and Linux. Paul's main interest is in porting and developing open-source
+software, and so his main programming language is C (at least until the open
+source community switches to C++).</p>
+<p>Paul's main claim to C++ fame is that he owns all 3 editions of Bjarne
+Stroustrup's &quot;The C++ Programming language&quot;, plus the ARM and the C++
+standard, but he didn't own a C++ compiler until after the 3rd edition of
+Stroustrup's book came out. Make of that what you will...</p>
+
+</body>
+
+</html>
diff --git a/people/paul_moore.jpg b/people/paul_moore.jpg
new file mode 100644
index 0000000000..25510b0a6b
--- /dev/null
+++ b/people/paul_moore.jpg
Binary files differ
diff --git a/people/paul_moore_small.jpg b/people/paul_moore_small.jpg
new file mode 100644
index 0000000000..b792c3ce7c
--- /dev/null
+++ b/people/paul_moore_small.jpg
Binary files differ
diff --git a/people/people.htm b/people/people.htm
new file mode 100644
index 0000000000..fc568f40d6
--- /dev/null
+++ b/people/people.htm
@@ -0,0 +1,119 @@
+<html>
+
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<title>Boost People</title>
+<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
+<meta name="ProgId" content="FrontPage.Editor.Document">
+<meta name="Microsoft Border" content="none, default">
+</head>
+
+<body bgcolor="#FFFFFF" text="#000000">
+
+<table border="1" bgcolor="#007F7F" cellpadding="2">
+ <tr>
+ <td bgcolor="#FFFFFF"><img src="../c++boost.gif" alt="c++boost.gif (8819 bytes)" width="277" height="86"></td>
+ <td><a href="../index.htm"><font face="Arial" color="#FFFFFF"><big>Home</big></font></a></td>
+ <td><a href="../libs/libraries.htm"><font face="Arial" color="#FFFFFF"><big>Libraries</big></font></a></td>
+ <td><a href="people.htm"><font face="Arial" color="#FFFFFF"><big>People</big></font></a></td>
+ <td><a href="../more/faq.htm"><font face="Arial" color="#FFFFFF"><big>FAQ</big></font></a></td>
+ <td><a href="../more/index.htm"><font face="Arial" color="#FFFFFF"><big>More</big></font></a></td>
+ </tr>
+</table>
+<h1>Boost People</h1>
+<p>(Click on the names for biographies)<br>
+(Click on the images for enlarged images)</p>
+<table border="0" cellpadding="4" cellspacing="4">
+ <tr>
+ <td><a href="dave_abrahams.htm">Dave Abrahams</a></td>
+ <td><a href="dave_abrahams.jpg"><img border="0" src="dave_abrahams_small.jpg" alt="dave_abrahams.jpg (30926 bytes)" width="100" height="75"></a></td>
+ </tr>
+ <tr>
+ <td><a href="darin_adler.htm">Darin Adler</a></td>
+ <td><a href="darin_adler.jpg"><img border="0" src="darin_adler_small.jpg" alt="darin_adler.jpg (30416 bytes)" width="100" height="133"></a></td>
+ </tr>
+ <tr>
+ <td><a href="valentin_bonnard.htm">Valentin Bonnard</a></td>
+ <td><a href="valentin_bonnard.jpg"><img src="valentin_bonnard_small.jpg" alt="valentin_bonnard.jpg (18207 bytes)" border="0" width="100" height="142"></a></td>
+ </tr>
+ <tr>
+ <td><a href="ed_brey.htm">Ed Brey</a></td>
+ <td><a href="ed_brey.jpg"><img border="0" src="ed_brey_small.jpg" alt="ed_brey.jpg (13913 bytes)" width="100" height="118"></a></td>
+ </tr>
+ <tr>
+ <td><a href="gavin_collings.htm">Gavin Collings</a></td>
+ <td><a href="gavin_collings.jpg"><img border="0" src="gavin_collings_small.jpg" alt="gavin_collings.jpg (16739 bytes)" width="100" height="137"></a></td>
+ </tr>
+ <tr>
+ <td><a href="greg_colvin.htm">Greg Colvin</a></td>
+ <td><a href="greg_colvin.jpg"><img src="greg_colvin_small.jpg" alt="greg_colvin.jpg (52740 bytes)" border="0" width="100" height="133"></a></td>
+ </tr>
+ <tr>
+ <td><a href="http://www.ocsltd.com/founderff.html">Sean Corfield</a></td>
+ <td><a href="sean_corfield.jpg"><img src="sean_corfield_small.jpg" alt="sean_corfield.jpg (51225 bytes)" border="0" width="100" height="133"></a></td>
+ </tr>
+ <tr>
+ <td><a href="beman_dawes.html">Beman Dawes</a></td>
+ <td><a href="beman_dawes.jpg"><img src="beman_dawes_small.jpg" alt="beman_dawes.jpg (47863 bytes)" border="0" width="100" height="133"></a></td>
+ </tr>
+ <tr>
+ <td><a href="peter_dimov.htm">Peter Dimov</a></td>
+ <td><a href="peter_dimov.jpg"><img border="0" src="peter_dimov_small.jpg" alt="peter_dimov.jpg (16507 bytes)" width="100" height="131"></a></td>
+ </tr>
+ <tr>
+ <td><a href="aleksey_gurtovoy.htm">Aleksey Gurtovoy</a></td>
+ <td><a href="aleksey_gurtovoy.jpg"><img border="0" src="aleksey_gurtovoy_small.jpg" alt="aleksey_gurtovoy.jpg (12871 bytes)" width="100" height="120"></a></td>
+ </tr>
+ <tr>
+ <td><a href="kevlin_henney.htm">Kevlin Henney</a></td>
+ <td><a href="kevlin_henney.jpg"><img src="kevlin_henney_small.jpg" alt="kevlin_henney.jpg (27191 bytes)" border="0" width="100" height="133"></a></td>
+ </tr>
+ <tr>
+ <td><a href="howard_hinnant.htm">Howard Hinnant</a></td>
+ <td><a href="howard_hinnant.jpg"><img border="0" src="howard_hinnant_small.jpg" alt="howard_hinnant.jpg (19817 bytes)" width="100" height="97"></a></td>
+ </tr>
+ <tr>
+ <td><a href="http://www.josuttis.com">Nicolai Josuttis</a></td>
+ <td><a href="nicolai_josuttis.jpg"><img src="nicolai_josuttis_small.jpg" alt="nicolai_josuttis.jpg (40745 bytes)" border="0" width="100" height="133"></a></td>
+ </tr>
+ <tr>
+ <td><a href="william_kempf.htm">William Kempf</a></td>
+ <td><a href="william_kempf.jpg"><img border="0" src="william_kempf_small.jpg" alt="william_kempf.jpg (10935 bytes)" width="100"></a></td>
+ </tr>
+ <tr>
+ <td><a href="dietmar_kuehl.htm">Dietmar Kühl</a></td>
+ <td><a href="dietmar_kuehl.jpg"><img src="dietmar_kuehl_small.jpg" alt="dietmar_kuehl.jpg (57821 bytes)" border="0" width="100" height="133"></a></td>
+ </tr>
+ <tr>
+ <td><a href="liequan_lee.htm">Lie-Quan Lee</a></td>
+ <td><a href="liequan_lee.jpg"><img border="0" src="liequan_lee_small.jpg" alt="liequan_lee.jpg (24165 bytes)" width="93" height="133"></a></td>
+ </tr>
+ <tr>
+ <td><a href="john_maddock.htm">John Maddock</a></td>
+ <td><a href="john_maddock.jpg"><img border="0" src="john_maddock_small.jpg" alt="john_maddock.jpg (14611 bytes)" width="100" height="132"></a></td>
+ </tr>
+ <tr>
+ <td><a href="jens_maurer.htm">Jens Maurer</a></td>
+ <td><a href="jens_maurer.jpg"><img border="0" src="jens_maurer_small.jpg" width="100" height="124"></a></td>
+ </tr>
+ <tr>
+ <td><a href="paul_moore.htm">Paul Moore</a></td>
+ <td><a href="paul_moore.jpg"><img border="0" src="paul_moore_small.jpg" alt="paul_moore.jpg (12023 bytes)" width="100" height="81"></a></td>
+ </tr>
+ <tr>
+ <td><a href="gary_powell.htm">Gary Powell</a></td>
+ <td><a href="gary_powell.jpg"><img border="0" src="gary_powell_small.jpg" alt="gary_powell.jpg (13577 bytes)" width="100" height="133"></a></td>
+ </tr>
+ <tr>
+ <td><a href="mark_rodgers.htm">Mark Rodgers</a></td>
+ <td><a href="mark_rodgers.jpg"><img border="0" src="mark_rodgers_small.jpg" alt="mark_rodgers.jpg (23035 bytes)" width="100" height="75"></a></td>
+ </tr>
+ <tr>
+ <td><a href="jeremy_siek.htm">Jeremy Siek</a></td>
+ <td><a href="jeremy_siek.jpg"><img border="0" src="jeremy_siek_small.jpg" alt="jeremy_siek.jpg (12867 bytes)" width="100" height="133"></a></td>
+ </tr>
+</table>
+
+</body>
+
+</html>
diff --git a/people/peter_dimov.htm b/people/peter_dimov.htm
new file mode 100644
index 0000000000..5d775d1a1c
--- /dev/null
+++ b/people/peter_dimov.htm
@@ -0,0 +1,32 @@
+<html>
+
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
+<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
+<meta name="ProgId" content="FrontPage.Editor.Document">
+<title>Peter Dimov</title>
+</head>
+
+<body bgcolor="#FFFFFF" text="#000000">
+
+<table border="1" bgcolor="#007F7F" cellpadding="2">
+ <tr>
+ <td bgcolor="#FFFFFF"><img src="../c++boost.gif" alt="c++boost.gif (8819 bytes)" width="277" height="86"></td>
+ <td><a href="../index.htm"><font face="Arial" color="#FFFFFF"><big>Home</big></font></a></td>
+ <td><a href="../libs/libraries.htm"><font face="Arial" color="#FFFFFF"><big>Libraries</big></font></a></td>
+ <td><a href="people.htm"><font face="Arial" color="#FFFFFF"><big>People</big></font></a></td>
+ <td><a href="../more/faq.htm"><font face="Arial" color="#FFFFFF"><big>FAQ</big></font></a></td>
+ <td><a href="../more/index.htm"><font face="Arial" color="#FFFFFF"><big>More</big></font></a></td>
+ </tr>
+</table>
+<p><a href="peter_dimov.jpg"><img border="0" src="peter_dimov_small.jpg" alt="peter_dimov.jpg (16507 bytes)" align="left" hspace="10" vspace="5" width="100" height="131"><br>
+<br>
+</a>Peter Dimov is a software developer from Plovdiv, Bulgaria. He is working at
+Multi Media (<a href="http://www.mmltd.net">www.mmltd.net</a>) - a company that
+really deserves a better web site.</p>
+<p>He likes C++. Not to the extent to donate a kidney for every proposed
+extension, but close.</p>
+
+</body>
+
+</html>
diff --git a/people/peter_dimov.jpg b/people/peter_dimov.jpg
new file mode 100644
index 0000000000..7450b7b6de
--- /dev/null
+++ b/people/peter_dimov.jpg
Binary files differ
diff --git a/people/peter_dimov_small.jpg b/people/peter_dimov_small.jpg
new file mode 100644
index 0000000000..e457500adb
--- /dev/null
+++ b/people/peter_dimov_small.jpg
Binary files differ
diff --git a/people/sean_corfield.jpg b/people/sean_corfield.jpg
new file mode 100644
index 0000000000..bd4f7b171e
--- /dev/null
+++ b/people/sean_corfield.jpg
Binary files differ
diff --git a/people/sean_corfield_small.jpg b/people/sean_corfield_small.jpg
new file mode 100644
index 0000000000..732fd26f58
--- /dev/null
+++ b/people/sean_corfield_small.jpg
Binary files differ
diff --git a/people/valentin_bonnard.htm b/people/valentin_bonnard.htm
new file mode 100644
index 0000000000..d4e38ee372
--- /dev/null
+++ b/people/valentin_bonnard.htm
@@ -0,0 +1,27 @@
+<html>
+
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<title>Valentin Bonnard</title>
+<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
+</head>
+
+<body bgcolor="#FFFFFF" text="#000000">
+
+<table border="1" bgcolor="#007F7F" cellpadding="2">
+ <tr>
+ <td bgcolor="#FFFFFF"><img src="../c++boost.gif" alt="c++boost.gif (8819 bytes)" WIDTH="277" HEIGHT="86"></td>
+ <td><a href="../index.htm"><font face="Arial" color="#FFFFFF"><big>Home </big></font></a></td>
+ <td><a href="../libs/libraries.htm"><font face="Arial" color="#FFFFFF"><big>Libraries </big></font></a></td>
+ <td><a href="people.htm"><font face="Arial" color="#FFFFFF"><big>People </big></font></a></td>
+ <td><a href="../more/index.htm"><font face="Arial" color="#FFFFFF"><big>More </big></font></a></td>
+ <td><a href="../more/faq.htm"><font face="Arial" color="#FFFFFF"><big>FAQ </big></font></a></td>
+ </tr>
+</table>
+
+<p><a href="valentin_bonnard.jpg"><img src="valentin_bonnard_small.jpg" alt="valentin_bonnard.jpg (18207 bytes)" border="0" align="left" hspace="10" vspace="5" WIDTH="100" HEIGHT="133"></a>Valentin Bonnard is currently studying the semantics of
+programming languages and logical proofs. In his spare time, he writes C++ programs, and
+participates in newsgroup discussions about C++. He is also a member of AFNOR, the French
+C++ standardisation committee. </p>
+</body>
+</html>
diff --git a/people/valentin_bonnard.jpg b/people/valentin_bonnard.jpg
new file mode 100644
index 0000000000..fb3d7afde1
--- /dev/null
+++ b/people/valentin_bonnard.jpg
Binary files differ
diff --git a/people/valentin_bonnard_small.jpg b/people/valentin_bonnard_small.jpg
new file mode 100644
index 0000000000..6bc8cdb71c
--- /dev/null
+++ b/people/valentin_bonnard_small.jpg
Binary files differ
diff --git a/people/william_kempf.htm b/people/william_kempf.htm
new file mode 100644
index 0000000000..8139ee3648
--- /dev/null
+++ b/people/william_kempf.htm
@@ -0,0 +1,35 @@
+<html>
+
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
+<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
+<meta name="ProgId" content="FrontPage.Editor.Document">
+<title>William Kempf</title>
+</head>
+
+<body bgcolor="#FFFFFF" text="#000000">
+
+<table border="1" bgcolor="#007F7F" cellpadding="2">
+ <tr>
+ <td bgcolor="#FFFFFF"><img src="../c++boost.gif" alt="c++boost.gif (8819 bytes)" width="277" height="86"></td>
+ <td><a href="../index.htm"><font face="Arial" color="#FFFFFF"><big>Home</big></font></a></td>
+ <td><a href="../libs/libraries.htm"><font face="Arial" color="#FFFFFF"><big>Libraries</big></font></a></td>
+ <td><a href="people.htm"><font face="Arial" color="#FFFFFF"><big>People</big></font></a></td>
+ <td><a href="../more/faq.htm"><font face="Arial" color="#FFFFFF"><big>FAQ</big></font></a></td>
+ <td><a href="../more/index.htm"><font face="Arial" color="#FFFFFF"><big>More</big></font></a></td>
+ </tr>
+</table>
+<p><a href="william_kempf.jpg"><img border="0" src="william_kempf_small.jpg" alt="william_kempf.jpg (10935 bytes)" align="left" hspace="10" vspace="5" width="107" height="130"></a>
+Bill Kempf lives in Omaha, NE with his wife Bonnie, his cat Dexter and his
+two Chinchillas, Chimney and Minuet. He married on Oct. 30, 1999 where he and
+his wife held a Halloween costume reception. If that doesn't give you an idea of
+what kind of guy he is, nothing will.</p>
+<p>Bill graduated from Doane, a small private college in Nebraska in 1992 with a
+B.S. in Computer Science/Math. Being in the wrong place at the wrong time he had
+to take a job as the only person in an IS shop for a local affiliate of the
+Bunge Grain Company. In 1995 he moved on to a job as a software engineer for
+First Data Resources where he worked on client/server financial applications.</p>
+
+</body>
+
+</html>
diff --git a/people/william_kempf.jpg b/people/william_kempf.jpg
new file mode 100644
index 0000000000..41d239dc63
--- /dev/null
+++ b/people/william_kempf.jpg
Binary files differ
diff --git a/people/william_kempf_small.jpg b/people/william_kempf_small.jpg
new file mode 100644
index 0000000000..c0589dc500
--- /dev/null
+++ b/people/william_kempf_small.jpg
Binary files differ
diff --git a/status/compiler.cfg b/status/compiler.cfg
new file mode 100644
index 0000000000..58a1063ad5
--- /dev/null
+++ b/status/compiler.cfg
@@ -0,0 +1,186 @@
+// Boost compiler configuration file
+//
+// The first command template is for compile only tests
+// The second command template is for compile and link (and possibly run) tests
+//
+// Change log:
+// 20 Jan 2001 - Turned on STLPort debug mode and turned off incremental linking
+// for vc6 builds. Added cygwin build. Waiting for a fix for
+// cygwin/stlport to add that (David Abrahams).
+
+linux
+gcc
+GCC 2.95.2
+g++ -c -Wall -W -ftemplate-depth-30 -I%include %source
+g++ -o boosttmp.exe -Wall -W -ftemplate-depth-30 -I%include %source
+GNU<br>GCC<br>2.95.2
+
+linux
+gcc-stlport
+GCC 2.95.2 STLport 4.0
+g++ -c -V 2.95.2-stlport -Wall -W -ftemplate-depth-30 -I%include %source
+g++ -o boosttmp.exe -V 2.95.2-stlport -Wall -W -ftemplate-depth-30 -I%include %source
+GNU<br>GCC<br>2.95.2<br>STLport<br>4.0
+
+linux
+como
+Comeau C++ 4.2.44 beta3
+como -c -I%include %source
+como -o boosttmp.exe -I%include %source
+Comeau C++<br>4.2.44 beta3<br>STLport<br>4.0
+
+linux
+como-strict
+Comeau C++ 4.2.44 beta3 (strict mode)
+como --strict_warnings -D__STRICT_ANSI__ -c -I%include %source
+como --strict_warnings -D__STRICT_ANSI__ -o boosttmp.exe -I%include %source
+Comeau C++<br>4.2.44 beta3<br>(strict mode)<br>STLport<br>4.0
+
+hpux
+gcc
+GCC 2.95.2
+g++ -c -ftemplate-depth-30 -I%include %source
+g++ -o boosttmp.exe -ftemplate-depth-30 -I%include %source -ldce
+GNU<br>GCC<br>2.95.2
+
+hpux
+aCC
+HP ANSI C++ B3910B A.01.18
+aCC -c -I%include %source
+aCC -o boosttmp.exe -I%include %source
+HP<br>aCC<br>A.01.18
+
+solaris
+suncc
+Sun WorkShop 6 update 1 C++ 5.2 2000/09/11
+CC -c -I%include %source
+CC -o boosttmp.exe -I%include %source
+Sun<br>WorkShop 6.u1<br>C++ 5.2
+
+solaris
+suncc64
+Sun WorkShop 6 update 1 C++ 5.2 2000/09/11 64 bit
+CC -c -xarch=v9 -I%include %source
+mkdir -p 64bit && cd 64bit && CC -o boosttmp.exe -xarch=v9 -I../%include ../%source
+Sun<br>WorkShop 6.u1<br>C++ 5.2<br>64 bit
+
+solaris
+kcc
+KCC 4.0a
+/afs/nd.edu/sun4x_57/usr/local/src/kai/kai40a2/KCC_BASE/bin/KCC -c --strict_warnings -I%include %source
+/afs/nd.edu/sun4x_57/usr/local/src/kai/kai40a2/KCC_BASE/bin/KCC -o boosttmp.exe --strict_warnings -I%include %source -lm
+KAI<br>KCC<br>4.0a
+
+solaris
+kcc3
+KCC 3.4g
+KCC -c --strict_warnings -I%include %source
+KCC -o boosttmp.exe --strict_warnings -I%include %source -lm
+KAI<br>KCC<br>3.4g
+
+solaris
+gcc
+GCC 2.95.2
+g++ -c -ansi -Wall -ftemplate-depth-30 -Wno-long-long -I%include %source
+g++ -o boosttmp.exe -ansi -Wall -ftemplate-depth-30 -Wno-long-long -I%include %source
+GNU<br>GCC<br>2.95.2
+
+tru64
+cxx
+Compaq C++ 6.2
+cxx -c -std strict_ansi -D__USE_STD_IOSTREAM -I%include %source
+cxx -o boosttmp.exe -std strict_ansi -D__USE_STD_IOSTREAM -I%include %source -lm
+Compaq C++<br>6.2-024
+
+tru64
+cxx-clib
+Compaq C++ 6.2 with <cXXX> headers
+cxx -c -std strict_ansi -D__USE_STD_IOSTREAM -I$HOME/include -I%include %source
+cxx -o boosttmp.exe -std strict_ansi -D__USE_STD_IOSTREAM -I$HOME/include -I%include %source -lm
+Compaq C++<br>6.2-024<br>clib
+
+irix
+irixcc
+IRIX CC 7.1.3.3
+CC -c -LANG:std -I%include %source
+CC -G0 -o boosttmp.exe -LANG:std -I%include %source -lm
+SGI IRIX CC<br>7.3.1.1m
+
+irix
+irixcc-clib
+IRIX CC 7.1.3.3 with <cXXX> headers
+CC -c -LANG:std -I$HOME/include -I%include %source
+CC -G0 -o boosttmp.exe -LANG:std -I$HOME/include -I%include %source -lm
+SGI IRIX CC<br>7.3.1.1m<br>clib
+
+irix
+irixcc-stlport
+IRIX CC 7.1.3.3 with STLport 4.1b4
+CC -c -LANG:std -I$HOME/STLport-4.1b4/stlport -I%include %source
+CC -c -G0 -o boosttmp.o -LANG:std -ptused -I$HOME/STLport-4.1b4/stlport -I%include %source && ld -call_shared -init _main -fini _fini -no_unresolved -transitive_link -demangle -elf -_SYSTYPE_SVR4 -LANG:std -L$HOME/software-irix/lib -rpath $HOME/software-irix/lib -cxx /usr/lib32/mips4/crt1.o /usr/lib32/c++init.o -o boosttmp.exe boosttmp.o -lstlport_mipspro_41 -lC -lc -lm -Bdynamic /usr/lib32/mips4/crtn.o
+SGI IRIX CC<br>7.3.1.1m<br>STLport<br>4.1b4
+
+beos
+gcc
+GNU GCC
+c++ -c -ftemplate-depth-30 -Wall -I%include %source
+c++ -o boosttmp.exe -ftemplate-depth-30 -Wall -I%include %source
+GNUPro<br>GCC&nbsp;2.9
+
+beos
+gcc-stlport
+GNU GCC
+c++ -c -ftemplate-depth-30 -Wall -I/boot/home/config/stlport/stl330 -I%include %source
+c++ -o boosttmp.exe -ftemplate-depth-30 -Wall -I/boot/home/config/stlport/stl330 -I%include %source
+GNUPro<br>GCC&nbsp;2.9<br>+<br>SGI&nbsp;STL&nbsp;3.3
+
+win32
+bcc
+Borland C++ 5.5.1
+bcc32 -c -I%include -j10 -q %source
+bcc32 -eboosttmp.exe -I%include -j10 -q %source
+Borland<br>BCC<br>5.5.1
+
+win32
+cw
+Metrowerks CodeWarrior
+mwcc -c -nocodegen -maxerrors 10 -cwd source -I- -I%include %source
+mwcc -o boosttmp.exe -maxerrors 10 -cwd source -I- -I%include %source
+Metrowerks<br>CodeWarrior<br>6.0
+
+win32
+vc
+Microsoft Visual C++
+cl /c /nologo /Zm400 /MDd /W3 /GR /GX /Zi /Od /GZ /I"%include" /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_CONSOLE" %source
+cl /Feboosttmp.exe /nologo /Zm400 /MDd /W3 /GR /GX /Zi /Od /GZ /I"%include" /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_CONSOLE" %source /link /incremental:no user32.lib
+Microsoft<br>VC++<br>6.0 SP4
+
+win32
+vc-stlport
+Microsoft Visual C++ with STLport
+cl /c /nologo /Zm400 /MDd /W3 /GR /GX /Zi /Od /GZ /I "$BOOST_STLPORT_PATH/stlport" /I"%include" /D "__STL_DEBUG" /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_CONSOLE" %source
+cl /Feboosttmp.exe /nologo /Zm400 /MDd /W3 /GR /GX /Zi /Od /GZ /I "$BOOST_STLPORT_PATH/stlport" /I"%include" /D "__STL_DEBUG" /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_CONSOLE" %source /link /incremental:no /libpath:$BOOST_STLPORT_PATH\lib user32.lib
+Microsoft<br>VC++<br>6.0 SP4<br>STLport<br>4.0
+
+win32
+cygwin
+GCC under cygwin
+g++ -c -ftemplate-depth-30 -I%include %source
+g++ -o boosttmp.exe -ftemplate-depth-30 -I%include %source
+GNU GCC<br>2.95.2-6<br>Cygwin 1.1.7
+
+//win32
+//gcc-stlport-debug
+//GCC under cygwin with STLport 4.0
+//g++ -c -ftemplate-depth-30 -I%include -D __STL_DEBUG -I "$BOOST_STLPORT_PATH/stlport" %source
+//g++ -o boosttmp.exe -ftemplate-depth-30 "$BOOST_STLPORT_PATH/lib/" -I%include %source
+//GNU<br>GCC<br>2.95.2-6<br>STLport<br>4.0
+
+win32
+icl
+Intel C++ 5.0
+icl /c /nologo /Qwn5 /Qwe70 /Zm400 /MDd /W3 /GR /GX /Zi /Od /GZ /I"%include" /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_CONSOLE" -D BOOST_INCLUDE_MAIN %source
+icl /Feboosttmp.exe /nologo /Qwn5 /Qwe70 /Zm400 /MDd /W3 /GR /GX /Zi /Od /GZ /I"%include" /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_CONSOLE" %source /link user32.lib
+Intel C++<br>5.0<br>MS lib<br>6.0
+
+// end of file
diff --git a/status/compiler_status.html b/status/compiler_status.html
new file mode 100644
index 0000000000..451ace4fcd
--- /dev/null
+++ b/status/compiler_status.html
@@ -0,0 +1,104 @@
+<html>
+
+<head>
+<meta http-equiv="Content-Type"
+content="text/html; charset=iso-8859-1">
+<meta name="ProgId" content="FrontPage.Editor.Document">
+<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
+<title>Boost Compiler Status Report</title>
+</head>
+
+<body bgcolor="#FFFFFF" text="#000000">
+
+
+<table border="1" bgcolor="#007F7F" cellpadding="2">
+ <tr>
+ <td bgcolor="#FFFFFF"><img src="../c++boost.gif" alt="c++boost.gif (8819 bytes)" width="277" height="86"></td>
+ <td><a href="../index.htm"><font face="Arial" color="#FFFFFF"><big>Home</big></font></a></td>
+ <td><a href="../libs/libraries.htm"><font face="Arial" color="#FFFFFF"><big>Libraries</big></font></a></td>
+ <td><a href="../people/people.htm"><font face="Arial" color="#FFFFFF"><big>People</big></font></a></td>
+ <td><a href="../more/faq.htm"><font face="Arial" color="#FFFFFF"><big>FAQ</big></font></a></td>
+ <td><a href="../more/index.htm"><font face="Arial" color="#FFFFFF"><big>More</big></font></a></td>
+ </tr>
+</table>
+
+
+<h1>Compiler Status</h1>
+
+<p>Will all boost libraries work with your compiler?&nbsp;
+Unfortunately, the answer is &quot;it depends.&quot;.</p>
+
+<p>Boost libraries rely on modern C++ features such as templates
+and the C++ Standard Library.&nbsp; Most modern compilers support those major
+features fairly well. But even today, years after
+the adoption of the C++ Standard, some compilers still don't
+support important minor features like partial template specialization.</p>
+
+<p>Boost library authors often expend a great deal of effort
+trying to work around compiler deficiencies.&nbsp; Nevertheless,
+some libraries will not compile at all with certain compilers or
+may have crippled functionality.&nbsp; Even if the current
+release of a compiler supports a boost library, older version of
+the compiler may not work properly.</p>
+
+<h2><a name="Compiler Status Tables">Compiler Status Tables</a></h2>
+
+<ul>
+ <li><a href="cs-beos.html">BeOS5/Intel</a>
+ <a href="ftp://boost.sourceforge.net/pub/boost/regression-logs/beos.log.gz">[compiler messages]</a>
+ Contributed by
+ <a href="../people/john_maddock.htm">John Maddock</a></li>
+ <li><a href="cs-tru64.html">Compaq Tru64 Unix 5.0</a>
+ <a href="ftp://boost.sourceforge.net/pub/boost/regression-logs/alpha.log.gz">[compiler messages]</a>
+ Contributed by
+ <a href="../people/jens_maurer.htm">Jens Maurer</a>
+ in co-operation with Ralf W. Grosse-Kunstleve</li>
+ <li><a href="cs-hpux.html">HP/UX 10.x</a>
+ Contributed by Thomas Matelich</li>
+
+ <li><a href="cs-linux.html">Linux/x86</a>
+ <a href="ftp://boost.sourceforge.net/pub/boost/regression-logs/linux.log.gz">[compiler messages]</a>
+ Contributed by
+ <a href="../people/jens_maurer.htm">Jens Maurer</a></li>
+ <li><a href="cs-win32.html">Microsoft Windows NT / Windows 2000</a>
+ <a href="ftp://boost.sourceforge.net/pub/boost/regression-logs/win32.zip">[compiler messages]</a>
+ Contributed by
+ <a href="../people/beman_dawes.html">Beman Dawes</a></li>
+ <li><a href="cs-irix.html">SGI IRIX 6.5</a>
+ <a href="ftp://boost.sourceforge.net/pub/boost/regression-logs/irix.log.gz">[compiler messages]</a>
+ Contributed by
+ <a href="../people/jens_maurer.htm">Jens Maurer</a>
+ in co-operation with Ralf W. Grosse-Kunstleve</li>
+ <li><a href="cs-solaris.html">Sun Solaris/SPARC 2.7</a>
+ <a href="ftp://boost.sourceforge.net/pub/boost/regression-logs/solaris.log.gz">[compiler messages]</a>
+ Contributed by
+ <a href="../people/jens_maurer.htm">Jens Maurer</a>
+ in co-operation with Andrew Lumsdaine</li>
+
+</ul>
+
+<p>Boost releases are run through a <a href="../more/regression.html"> regression test
+suite</a> which
+automatically generates the above tables. Unless otherwise
+indicated, the C++ Standard Library implementation is the one
+shipped with the compiler.</p>
+
+<p><b>Warning:</b> These tables are not a good indication of a
+particular compiler's compliance with the C++ Standard.&nbsp; The
+boost libraries often contain workarounds which mask compiler
+deficiencies.</p>
+
+<p><b>Warning: </b>Some regression tests are compile
+only tests, or compile-and-link tests; the programs are not executed or otherwise tested.&nbsp;See
+the &quot;Test Type&quot; column in the tables. Even the compilation results may be spurious; many negative
+results stem from problems with the immature test suite rather
+that with the library or compiler.&nbsp; Furthermore, some
+library tests have not yet been included.</p>
+
+<hr>
+
+<p>Revised <!--webbot bot="Timestamp" s-type="EDITED"
+s-format="%d %B %Y" startspan -->10 February 2001<!--webbot bot="Timestamp" endspan i-checksum="40602" --></p>
+</body>
+</html>
+
diff --git a/status/cs-beos.html b/status/cs-beos.html
new file mode 100644
index 0000000000..5ef92f634e
--- /dev/null
+++ b/status/cs-beos.html
@@ -0,0 +1,355 @@
+<html>
+<head>
+<title>
+Compiler Status: beos
+</title>
+</head>
+<body bgcolor="#ffffff" text="#000000">
+<h1><img border border="0" src="../c++boost.gif" width="277" height="86"></h1>
+<h1>Compiler Status: beos</h1>
+
+<p><b>Run Date:</b> 10 Mar 2001 10:36 GMT</p>
+<p><b>System Configuration:</b> BeOS 5 Intel Edition</p>
+<p>
+<table border="1" cellspacing="0" cellpadding="5">
+<tr>
+<td>Program</td>
+<td>Test<br>Type</td>
+<td>GNUPro GCC 2.9</td>
+<td>GNUPro GCC 2.9<br>+<br>SGI STL 3.30</td>
+</tr>
+<tr>
+<td><a href="../libs/config/config_test.cpp">libs/config/config_test.cpp</a></td>
+<td>compile</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/array/array1.cpp">libs/array/array1.cpp</a></td>
+<td>run</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/concept_check/concept_check_test.cpp">libs/concept_check/concept_check_test.cpp</a></td>
+<td>compile</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/concept_check/class_concept_check_test.cpp">libs/concept_check/class_concept_check_test.cpp</a></td>
+<td>compile</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/concept_check/concept_check_fail_expected.cpp">libs/concept_check/concept_check_fail_expected.cpp</a></td>
+<td>link-fail</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/concept_check/class_concept_fail_expected.cpp">libs/concept_check/class_concept_fail_expected.cpp</a></td>
+<td>link-fail</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/conversion/cast_test.cpp">libs/conversion/cast_test.cpp</a></td>
+<td>run</td>
+<td><font color="#FF0000">Fail</font></td>
+<td><font color="#FF0000">Fail</font></td>
+</tr>
+<tr>
+<td><a href="../libs/conversion/lexical_cast_test.cpp">libs/conversion/lexical_cast_test.cpp</a></td>
+<td>run</td>
+<td><font color="#FF0000">Fail</font></td>
+<td><font color="#FF0000">Fail</font></td>
+</tr>
+<tr>
+<td><a href="../libs/functional/function_test.cpp">libs/functional/function_test.cpp</a></td>
+<td>run</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/graph/test/graph.cpp">libs/graph/test/graph.cpp</a></td>
+<td>run</td>
+<td><font color="#FF0000">Fail</font></td>
+<td><font color="#FF0000">Fail</font></td>
+</tr>
+<tr>
+<td><a href="../libs/integer/cstdint_test.cpp">libs/integer/cstdint_test.cpp</a></td>
+<td>run</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/integer/integer_test.cpp">libs/integer/integer_test.cpp</a></td>
+<td>run</td>
+<td><font color="#FF0000">Fail</font></td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/integer/integer_traits_test.cpp">libs/integer/integer_traits_test.cpp</a></td>
+<td>run</td>
+<td><font color="#FF0000">Fail</font></td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/pool/test/test_pool_alloc.cpp">libs/pool/test/test_pool_alloc.cpp</a></td>
+<td>run</td>
+<td><font color="#FF0000">Fail</font></td>
+<td><font color="#FF0000">Fail</font></td>
+</tr>
+<tr>
+<td><a href="../libs/rational/rational_example.cpp">libs/rational/rational_example.cpp</a></td>
+<td>run</td>
+<td><font color="#FF0000">Fail</font></td>
+<td><font color="#FF0000">Fail</font></td>
+</tr>
+<tr>
+<td><a href="../libs/rational/rational_test.cpp">libs/rational/rational_test.cpp</a></td>
+<td>run</td>
+<td><font color="#FF0000">Fail</font></td>
+<td><font color="#FF0000">Fail</font></td>
+</tr>
+<tr>
+<td><a href="../libs/random/random_test.cpp">libs/random/random_test.cpp</a></td>
+<td>run</td>
+<td><font color="#FF0000">Fail</font></td>
+<td><font color="#FF0000">Fail</font></td>
+</tr>
+<tr>
+<td><a href="../libs/random/random_demo.cpp">libs/random/random_demo.cpp</a></td>
+<td>run</td>
+<td><font color="#FF0000">Fail</font></td>
+<td><font color="#FF0000">Fail</font></td>
+</tr>
+<tr>
+<td><a href="../libs/regex/demo/regress/regex_test.cpp">libs/regex/demo/regress/regex_test.cpp</a></td>
+<td>run</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/regex/demo/regress/wregex_test.cpp">libs/regex/demo/regress/wregex_test.cpp</a></td>
+<td>run</td>
+<td><font color="#FF0000">Fail</font></td>
+<td><font color="#FF0000">Fail</font></td>
+</tr>
+<tr>
+<td><a href="../libs/smart_ptr/smart_ptr_test.cpp">libs/smart_ptr/smart_ptr_test.cpp</a></td>
+<td>run</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/static_assert/static_assert_test.cpp">libs/static_assert/static_assert_test.cpp</a></td>
+<td>compile</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/static_assert/static_assert_test_fail_1.cpp">libs/static_assert/static_assert_test_fail_1.cpp</a></td>
+<td>compile-fail</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/static_assert/static_assert_test_fail_2.cpp">libs/static_assert/static_assert_test_fail_2.cpp</a></td>
+<td>compile-fail</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/static_assert/static_assert_test_fail_3.cpp">libs/static_assert/static_assert_test_fail_3.cpp</a></td>
+<td>compile-fail</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/static_assert/static_assert_test_fail_4.cpp">libs/static_assert/static_assert_test_fail_4.cpp</a></td>
+<td>compile-fail</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/static_assert/static_assert_test_fail_5.cpp">libs/static_assert/static_assert_test_fail_5.cpp</a></td>
+<td>compile-fail</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/static_assert/static_assert_test_fail_6.cpp">libs/static_assert/static_assert_test_fail_6.cpp</a></td>
+<td>compile-fail</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/static_assert/static_assert_test_fail_7.cpp">libs/static_assert/static_assert_test_fail_7.cpp</a></td>
+<td>compile-fail</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/static_assert/static_assert_test_fail_8.cpp">libs/static_assert/static_assert_test_fail_8.cpp</a></td>
+<td>link-fail</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/test/example/test_tools_example.cpp">libs/test/example/test_tools_example.cpp</a></td>
+<td>run</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/test/test/test_tools_fail2.cpp">libs/test/test/test_tools_fail2.cpp</a></td>
+<td>run-fail</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/timer/timer_test.cpp">libs/timer/timer_test.cpp</a></td>
+<td>compile</td>
+<td><font color="#FF0000">Fail</font></td>
+<td><font color="#FF0000">Fail</font></td>
+</tr>
+<tr>
+<td><a href="../libs/type_traits/tests/alignment_test.cpp">libs/type_traits/tests/alignment_test.cpp</a></td>
+<td>run</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/type_traits/tests/arithmetic_traits_test.cpp">libs/type_traits/tests/arithmetic_traits_test.cpp</a></td>
+<td>run</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/type_traits/tests/composite_traits_test.cpp">libs/type_traits/tests/composite_traits_test.cpp</a></td>
+<td>run</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/type_traits/tests/cv_traits_test.cpp">libs/type_traits/tests/cv_traits_test.cpp</a></td>
+<td>run</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/type_traits/tests/is_convertible_test.cpp">libs/type_traits/tests/is_convertible_test.cpp</a></td>
+<td>run</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/type_traits/tests/is_same_test.cpp">libs/type_traits/tests/is_same_test.cpp</a></td>
+<td>run</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/type_traits/tests/object_type_traits_test.cpp">libs/type_traits/tests/object_type_traits_test.cpp</a></td>
+<td>run</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/type_traits/tests/transform_traits_test.cpp">libs/type_traits/tests/transform_traits_test.cpp</a></td>
+<td>run</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/utility/call_traits_test.cpp">libs/utility/call_traits_test.cpp</a></td>
+<td>run</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/utility/compressed_pair_test.cpp">libs/utility/compressed_pair_test.cpp</a></td>
+<td>run</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/utility/counting_iterator_test.cpp">libs/utility/counting_iterator_test.cpp</a></td>
+<td>run</td>
+<td><font color="#FF0000">Fail</font></td>
+<td><font color="#FF0000">Fail</font></td>
+</tr>
+<tr>
+<td><a href="../libs/utility/iterator_adaptor_test.cpp">libs/utility/iterator_adaptor_test.cpp</a></td>
+<td>run</td>
+<td><font color="#FF0000">Fail</font></td>
+<td><font color="#FF0000">Fail</font></td>
+</tr>
+<tr>
+<td><a href="../libs/utility/transform_iterator_test.cpp">libs/utility/transform_iterator_test.cpp</a></td>
+<td>run</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/utility/indirect_iterator_test.cpp">libs/utility/indirect_iterator_test.cpp</a></td>
+<td>run</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/utility/iter_traits_gen_test.cpp">libs/utility/iter_traits_gen_test.cpp</a></td>
+<td>run</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/utility/iter_adaptor_fail_expected1.cpp">libs/utility/iter_adaptor_fail_expected1.cpp</a></td>
+<td>compile-fail</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/utility/iter_adaptor_fail_expected2.cpp">libs/utility/iter_adaptor_fail_expected2.cpp</a></td>
+<td>compile-fail</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/utility/iterator_traits_test.cpp">libs/utility/iterator_traits_test.cpp</a></td>
+<td>run</td>
+<td><font color="#FF0000">Fail</font></td>
+<td><font color="#FF0000">Fail</font></td>
+</tr>
+<tr>
+<td><a href="../libs/utility/iterators_test.cpp">libs/utility/iterators_test.cpp</a></td>
+<td>run</td>
+<td><font color="#FF0000">Fail</font></td>
+<td><font color="#FF0000">Fail</font></td>
+</tr>
+<tr>
+<td><a href="../libs/utility/numeric_traits_test.cpp">libs/utility/numeric_traits_test.cpp</a></td>
+<td>run</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/utility/operators_test.cpp">libs/utility/operators_test.cpp</a></td>
+<td>run</td>
+<td><font color="#FF0000">Fail</font></td>
+<td><font color="#FF0000">Fail</font></td>
+</tr>
+<tr>
+<td><a href="../libs/utility/tie_example.cpp">libs/utility/tie_example.cpp</a></td>
+<td>run</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+</table></p>
+<p>
+</p>
+</body>
+</html>
diff --git a/status/cs-hpux.html b/status/cs-hpux.html
new file mode 100644
index 0000000000..6b50520770
--- /dev/null
+++ b/status/cs-hpux.html
@@ -0,0 +1,277 @@
+<html>
+<head>
+<title>
+Compiler Status: hpux
+</title>
+</head>
+<body bgcolor="#ffffff" text="#000000">
+<h1><img border border="0" src="../c++boost.gif" width="277" height="86"></h1>
+<h1>Compiler Status: hpux</h1>
+
+<p><b>Run Date:</b> 29 Jan 2001 20:52 GMT</p>
+<p><b>System Configuration:</b> HP-UX B.10.20 (CPU: 9000/778)</p>
+<p>
+<table border="1" cellspacing="0" cellpadding="5">
+<tr>
+<td>Program</td>
+<td>Test<br>Type</td>
+<td>GNU<br>GCC<br>2.95.2</td>
+<td>HP<br>aCC<br>A.01.18</td>
+</tr>
+<tr>
+<td><a href="../libs/config/config_test.cpp">libs/config/config_test.cpp</a></td>
+<td>compile</td>
+<td>Pass</td>
+<td><font color="#FF0000">Fail</font></td>
+</tr>
+<tr>
+<td><a href="../libs/array/array1.cpp">libs/array/array1.cpp</a></td>
+<td>run</td>
+<td>Pass</td>
+<td><font color="#FF0000">Fail</font></td>
+</tr>
+<tr>
+<td><a href="../libs/concept_check/concept_check_test.cpp">libs/concept_check/concept_check_test.cpp</a></td>
+<td>compile</td>
+<td>Pass</td>
+<td><font color="#FF0000">Fail</font></td>
+</tr>
+<tr>
+<td><a href="../libs/concept_check/class_concept_check_test.cpp">libs/concept_check/class_concept_check_test.cpp</a></td>
+<td>compile</td>
+<td>Pass</td>
+<td><font color="#FF0000">Fail</font></td>
+</tr>
+<tr>
+<td><a href="../libs/concept_check/concept_check_fail_expected.cpp">libs/concept_check/concept_check_fail_expected.cpp</a></td>
+<td>link-fail</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/concept_check/class_concept_fail_expected.cpp">libs/concept_check/class_concept_fail_expected.cpp</a></td>
+<td>link-fail</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/conversion/cast_test.cpp">libs/conversion/cast_test.cpp</a></td>
+<td>run</td>
+<td><font color="#FF0000">Fail</font></td>
+<td><font color="#FF0000">Fail</font></td>
+</tr>
+<tr>
+<td><a href="../libs/conversion/lexical_cast_test.cpp">libs/conversion/lexical_cast_test.cpp</a></td>
+<td>run</td>
+<td><font color="#FF0000">Fail</font></td>
+<td><font color="#FF0000">Fail</font></td>
+</tr>
+<tr>
+<td><a href="../libs/functional/function_test.cpp">libs/functional/function_test.cpp</a></td>
+<td>run</td>
+<td>Pass</td>
+<td><font color="#FF0000">Fail</font></td>
+</tr>
+<tr>
+<td><a href="../libs/graph/test/graph.cpp">libs/graph/test/graph.cpp</a></td>
+<td>run</td>
+<td><font color="#FF0000">Fail</font></td>
+<td><font color="#FF0000">Fail</font></td>
+</tr>
+<tr>
+<td><a href="../libs/integer/cstdint_test.cpp">libs/integer/cstdint_test.cpp</a></td>
+<td>run</td>
+<td>Pass</td>
+<td><font color="#FF0000">Fail</font></td>
+</tr>
+<tr>
+<td><a href="../libs/integer/integer_test.cpp">libs/integer/integer_test.cpp</a></td>
+<td>run</td>
+<td><font color="#FF0000">Fail</font></td>
+<td><font color="#FF0000">Fail</font></td>
+</tr>
+<tr>
+<td><a href="../libs/integer/integer_traits_test.cpp">libs/integer/integer_traits_test.cpp</a></td>
+<td>run</td>
+<td><font color="#FF0000">Fail</font></td>
+<td><font color="#FF0000">Fail</font></td>
+</tr>
+<tr>
+<td><a href="../libs/rational/rational_example.cpp">libs/rational/rational_example.cpp</a></td>
+<td>run</td>
+<td>Pass</td>
+<td><font color="#FF0000">Fail</font></td>
+</tr>
+<tr>
+<td><a href="../libs/random/random_test.cpp">libs/random/random_test.cpp</a></td>
+<td>run</td>
+<td><font color="#FF0000">Fail</font></td>
+<td><font color="#FF0000">Fail</font></td>
+</tr>
+<tr>
+<td><a href="../libs/random/random_demo.cpp">libs/random/random_demo.cpp</a></td>
+<td>run</td>
+<td><font color="#FF0000">Fail</font></td>
+<td><font color="#FF0000">Fail</font></td>
+</tr>
+<tr>
+<td><a href="../libs/regex/demo/regress/regex_test.cpp">libs/regex/demo/regress/regex_test.cpp</a></td>
+<td>run</td>
+<td>Pass</td>
+<td><font color="#FF0000">Fail</font></td>
+</tr>
+<tr>
+<td><a href="../libs/regex/demo/regress/wregex_test.cpp">libs/regex/demo/regress/wregex_test.cpp</a></td>
+<td>run</td>
+<td><font color="#FF0000">Fail</font></td>
+<td><font color="#FF0000">Fail</font></td>
+</tr>
+<tr>
+<td><a href="../libs/smart_ptr/smart_ptr_test.cpp">libs/smart_ptr/smart_ptr_test.cpp</a></td>
+<td>run</td>
+<td>Pass</td>
+<td><font color="#FF0000">Fail</font></td>
+</tr>
+<tr>
+<td><a href="../libs/static_assert/static_assert_test.cpp">libs/static_assert/static_assert_test.cpp</a></td>
+<td>compile</td>
+<td>Pass</td>
+<td><font color="#FF0000">Fail</font></td>
+</tr>
+<tr>
+<td><a href="../libs/static_assert/static_assert_test_fail_1.cpp">libs/static_assert/static_assert_test_fail_1.cpp</a></td>
+<td>compile-fail</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/static_assert/static_assert_test_fail_2.cpp">libs/static_assert/static_assert_test_fail_2.cpp</a></td>
+<td>compile-fail</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/static_assert/static_assert_test_fail_3.cpp">libs/static_assert/static_assert_test_fail_3.cpp</a></td>
+<td>compile-fail</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/static_assert/static_assert_test_fail_4.cpp">libs/static_assert/static_assert_test_fail_4.cpp</a></td>
+<td>compile-fail</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/static_assert/static_assert_test_fail_5.cpp">libs/static_assert/static_assert_test_fail_5.cpp</a></td>
+<td>compile-fail</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/static_assert/static_assert_test_fail_6.cpp">libs/static_assert/static_assert_test_fail_6.cpp</a></td>
+<td>compile-fail</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/static_assert/static_assert_test_fail_7.cpp">libs/static_assert/static_assert_test_fail_7.cpp</a></td>
+<td>compile-fail</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/static_assert/static_assert_test_fail_8.cpp">libs/static_assert/static_assert_test_fail_8.cpp</a></td>
+<td>compile-fail</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/timer/timer_test.cpp">libs/timer/timer_test.cpp</a></td>
+<td>compile</td>
+<td><font color="#FF0000">Fail</font></td>
+<td><font color="#FF0000">Fail</font></td>
+</tr>
+<tr>
+<td><a href="../libs/utility/call_traits_test.cpp">libs/utility/call_traits_test.cpp</a></td>
+<td>compile</td>
+<td>Pass</td>
+<td><font color="#FF0000">Fail</font></td>
+</tr>
+<tr>
+<td><a href="../libs/utility/compressed_pair_test.cpp">libs/utility/compressed_pair_test.cpp</a></td>
+<td>compile</td>
+<td>Pass</td>
+<td><font color="#FF0000">Fail</font></td>
+</tr>
+<tr>
+<td><a href="../libs/utility/counting_iterator_test.cpp">libs/utility/counting_iterator_test.cpp</a></td>
+<td>run</td>
+<td>Pass</td>
+<td><font color="#FF0000">Fail</font></td>
+</tr>
+<tr>
+<td><a href="../libs/utility/iterator_adaptor_test.cpp">libs/utility/iterator_adaptor_test.cpp</a></td>
+<td>run</td>
+<td>Pass</td>
+<td><font color="#FF0000">Fail</font></td>
+</tr>
+<tr>
+<td><a href="../libs/utility/iter_adaptor_fail_expected1.cpp">libs/utility/iter_adaptor_fail_expected1.cpp</a></td>
+<td>compile-fail</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/utility/iter_adaptor_fail_expected2.cpp">libs/utility/iter_adaptor_fail_expected2.cpp</a></td>
+<td>compile-fail</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/utility/iter_adaptor_fail_expected3.cpp">libs/utility/iter_adaptor_fail_expected3.cpp</a></td>
+<td>compile-fail</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/utility/iterator_traits_test.cpp">libs/utility/iterator_traits_test.cpp</a></td>
+<td>run</td>
+<td>Pass</td>
+<td><font color="#FF0000">Fail</font></td>
+</tr>
+<tr>
+<td><a href="../libs/utility/iterators_test.cpp">libs/utility/iterators_test.cpp</a></td>
+<td>run</td>
+<td>Pass</td>
+<td><font color="#FF0000">Fail</font></td>
+</tr>
+<tr>
+<td><a href="../libs/utility/numeric_traits_test.cpp">libs/utility/numeric_traits_test.cpp</a></td>
+<td>run</td>
+<td>Pass</td>
+<td><font color="#FF0000">Fail</font></td>
+</tr>
+<tr>
+<td><a href="../libs/utility/operators_test.cpp">libs/utility/operators_test.cpp</a></td>
+<td>run</td>
+<td>Pass</td>
+<td><font color="#FF0000">Fail</font></td>
+</tr>
+<tr>
+<td><a href="../libs/utility/tie_example.cpp">libs/utility/tie_example.cpp</a></td>
+<td>run</td>
+<td>Pass</td>
+<td><font color="#FF0000">Fail</font></td>
+</tr>
+<tr>
+<td><a href="../libs/utility/type_traits_test.cpp">libs/utility/type_traits_test.cpp</a></td>
+<td>compile</td>
+<td>Pass</td>
+<td><font color="#FF0000">Fail</font></td>
+</tr>
+</table></p>
+<p>
+</p>
+</body>
+</html>
diff --git a/status/cs-irix.html b/status/cs-irix.html
new file mode 100644
index 0000000000..655e54e068
--- /dev/null
+++ b/status/cs-irix.html
@@ -0,0 +1,371 @@
+<html>
+<head>
+<title>
+Compiler Status: irix
+</title>
+</head>
+<body bgcolor="#ffffff" text="#000000">
+<h1><img border border="0" src="../c++boost.gif" width="277" height="86"></h1>
+<h1>Compiler Status: irix</h1>
+
+<p><b>Run Date:</b> 20 Feb 2001 17:19 GMT</p>
+<p><b>System Configuration:</b> IRIX 6.5 (CPU: IP32)</p>
+<p>
+<table border="1" cellspacing="0" cellpadding="5">
+<tr>
+<td>Program</td>
+<td>Test<br>Type</td>
+<td>SGI IRIX CC<br>7.3.1.1m</td>
+<td>SGI IRIX CC<br>7.3.1.1m<br>clib</td>
+<td>SGI IRIX CC<br>7.3.1.1m<br>STLport<br>4.1b4</td>
+</tr>
+<tr>
+<td><a href="../libs/config/config_test.cpp">libs/config/config_test.cpp</a></td>
+<td>compile</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/array/array1.cpp">libs/array/array1.cpp</a></td>
+<td>run</td>
+<td><font color="#FF0000">Fail</font></td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/concept_check/concept_check_test.cpp">libs/concept_check/concept_check_test.cpp</a></td>
+<td>compile</td>
+<td><font color="#FF0000">Fail</font></td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/concept_check/class_concept_check_test.cpp">libs/concept_check/class_concept_check_test.cpp</a></td>
+<td>compile</td>
+<td><font color="#FF0000">Fail</font></td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/concept_check/concept_check_fail_expected.cpp">libs/concept_check/concept_check_fail_expected.cpp</a></td>
+<td>link-fail</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/concept_check/class_concept_fail_expected.cpp">libs/concept_check/class_concept_fail_expected.cpp</a></td>
+<td>link-fail</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/conversion/cast_test.cpp">libs/conversion/cast_test.cpp</a></td>
+<td>run</td>
+<td><font color="#FF0000">Fail</font></td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/conversion/lexical_cast_test.cpp">libs/conversion/lexical_cast_test.cpp</a></td>
+<td>run</td>
+<td>Pass</td>
+<td>Pass</td>
+<td><font color="#FF0000">Fail</font></td>
+</tr>
+<tr>
+<td><a href="../libs/functional/function_test.cpp">libs/functional/function_test.cpp</a></td>
+<td>run</td>
+<td><font color="#FF0000">Fail</font></td>
+<td><font color="#FF0000">Fail</font></td>
+<td><font color="#FF0000">Fail</font></td>
+</tr>
+<tr>
+<td><a href="../libs/graph/test/graph.cpp">libs/graph/test/graph.cpp</a></td>
+<td>run</td>
+<td><font color="#FF0000">Fail</font></td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/integer/cstdint_test.cpp">libs/integer/cstdint_test.cpp</a></td>
+<td>run</td>
+<td><font color="#FF0000">Fail</font></td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/integer/integer_test.cpp">libs/integer/integer_test.cpp</a></td>
+<td>run</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/integer/integer_traits_test.cpp">libs/integer/integer_traits_test.cpp</a></td>
+<td>run</td>
+<td><font color="#FF0000">Fail</font></td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/rational/rational_example.cpp">libs/rational/rational_example.cpp</a></td>
+<td>run</td>
+<td><font color="#FF0000">Fail</font></td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/rational/rational_test.cpp">libs/rational/rational_test.cpp</a></td>
+<td>run</td>
+<td><font color="#FF0000">Fail</font></td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/random/random_test.cpp">libs/random/random_test.cpp</a></td>
+<td>run</td>
+<td><font color="#FF0000">Fail</font></td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/random/random_demo.cpp">libs/random/random_demo.cpp</a></td>
+<td>run</td>
+<td><font color="#FF0000">Fail</font></td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/regex/demo/regress/regex_test.cpp">libs/regex/demo/regress/regex_test.cpp</a></td>
+<td>run</td>
+<td><font color="#FF0000">Fail</font></td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/regex/demo/regress/wregex_test.cpp">libs/regex/demo/regress/wregex_test.cpp</a></td>
+<td>run</td>
+<td><font color="#FF0000">Fail</font></td>
+<td><font color="#FF0000">Fail</font></td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/smart_ptr/smart_ptr_test.cpp">libs/smart_ptr/smart_ptr_test.cpp</a></td>
+<td>run</td>
+<td><font color="#FF0000">Fail</font></td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/static_assert/static_assert_test.cpp">libs/static_assert/static_assert_test.cpp</a></td>
+<td>compile</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/static_assert/static_assert_test_fail_1.cpp">libs/static_assert/static_assert_test_fail_1.cpp</a></td>
+<td>compile-fail</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/static_assert/static_assert_test_fail_2.cpp">libs/static_assert/static_assert_test_fail_2.cpp</a></td>
+<td>compile-fail</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/static_assert/static_assert_test_fail_3.cpp">libs/static_assert/static_assert_test_fail_3.cpp</a></td>
+<td>compile-fail</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/static_assert/static_assert_test_fail_4.cpp">libs/static_assert/static_assert_test_fail_4.cpp</a></td>
+<td>compile-fail</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/static_assert/static_assert_test_fail_5.cpp">libs/static_assert/static_assert_test_fail_5.cpp</a></td>
+<td>compile-fail</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/static_assert/static_assert_test_fail_6.cpp">libs/static_assert/static_assert_test_fail_6.cpp</a></td>
+<td>compile-fail</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/static_assert/static_assert_test_fail_7.cpp">libs/static_assert/static_assert_test_fail_7.cpp</a></td>
+<td>compile-fail</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/static_assert/static_assert_test_fail_8.cpp">libs/static_assert/static_assert_test_fail_8.cpp</a></td>
+<td>link-fail</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/timer/timer_test.cpp">libs/timer/timer_test.cpp</a></td>
+<td>compile</td>
+<td><font color="#FF0000">Fail</font></td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/type_traits/tests/alignment_test.cpp">libs/type_traits/tests/alignment_test.cpp</a></td>
+<td>run</td>
+<td><font color="#FF0000">Fail</font></td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/type_traits/tests/arithmetic_traits_test.cpp">libs/type_traits/tests/arithmetic_traits_test.cpp</a></td>
+<td>run</td>
+<td><font color="#FF0000">Fail</font></td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/type_traits/tests/composite_traits_test.cpp">libs/type_traits/tests/composite_traits_test.cpp</a></td>
+<td>run</td>
+<td><font color="#FF0000">Fail</font></td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/type_traits/tests/cv_traits_test.cpp">libs/type_traits/tests/cv_traits_test.cpp</a></td>
+<td>run</td>
+<td><font color="#FF0000">Fail</font></td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/type_traits/tests/is_convertible_test.cpp">libs/type_traits/tests/is_convertible_test.cpp</a></td>
+<td>run</td>
+<td><font color="#FF0000">Fail</font></td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/type_traits/tests/is_same_test.cpp">libs/type_traits/tests/is_same_test.cpp</a></td>
+<td>run</td>
+<td><font color="#FF0000">Fail</font></td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/type_traits/tests/object_type_traits_test.cpp">libs/type_traits/tests/object_type_traits_test.cpp</a></td>
+<td>run</td>
+<td><font color="#FF0000">Fail</font></td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/type_traits/tests/transform_traits_test.cpp">libs/type_traits/tests/transform_traits_test.cpp</a></td>
+<td>run</td>
+<td><font color="#FF0000">Fail</font></td>
+<td><font color="#FF0000">Fail</font></td>
+<td><font color="#FF0000">Fail</font></td>
+</tr>
+<tr>
+<td><a href="../libs/utility/call_traits_test.cpp">libs/utility/call_traits_test.cpp</a></td>
+<td>run</td>
+<td><font color="#FF0000">Fail</font></td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/utility/compressed_pair_test.cpp">libs/utility/compressed_pair_test.cpp</a></td>
+<td>run</td>
+<td><font color="#FF0000">Fail</font></td>
+<td><font color="#FF0000">Fail</font></td>
+<td><font color="#FF0000">Fail</font></td>
+</tr>
+<tr>
+<td><a href="../libs/utility/counting_iterator_test.cpp">libs/utility/counting_iterator_test.cpp</a></td>
+<td>run</td>
+<td><font color="#FF0000">Fail</font></td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/utility/iterator_adaptor_test.cpp">libs/utility/iterator_adaptor_test.cpp</a></td>
+<td>run</td>
+<td><font color="#FF0000">Fail</font></td>
+<td><font color="#FF0000">Fail</font></td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/utility/iter_adaptor_fail_expected1.cpp">libs/utility/iter_adaptor_fail_expected1.cpp</a></td>
+<td>compile-fail</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/utility/iter_adaptor_fail_expected2.cpp">libs/utility/iter_adaptor_fail_expected2.cpp</a></td>
+<td>compile-fail</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/utility/iterator_traits_test.cpp">libs/utility/iterator_traits_test.cpp</a></td>
+<td>run</td>
+<td><font color="#FF0000">Fail</font></td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/utility/iterators_test.cpp">libs/utility/iterators_test.cpp</a></td>
+<td>run</td>
+<td><font color="#FF0000">Fail</font></td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/utility/numeric_traits_test.cpp">libs/utility/numeric_traits_test.cpp</a></td>
+<td>run</td>
+<td><font color="#FF0000">Fail</font></td>
+<td><font color="#FF0000">Fail</font></td>
+<td><font color="#FF0000">Fail</font></td>
+</tr>
+<tr>
+<td><a href="../libs/utility/operators_test.cpp">libs/utility/operators_test.cpp</a></td>
+<td>run</td>
+<td><font color="#FF0000">Fail</font></td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/utility/tie_example.cpp">libs/utility/tie_example.cpp</a></td>
+<td>run</td>
+<td><font color="#FF0000">Fail</font></td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+</table></p>
+<p>
+Note: For the 'clib' configuration, the missing new-style C
+library headers &lt;cXXX&gt; have been supplied.
+</p>
+</body>
+</html>
diff --git a/status/cs-linux.html b/status/cs-linux.html
new file mode 100644
index 0000000000..02bfac5866
--- /dev/null
+++ b/status/cs-linux.html
@@ -0,0 +1,422 @@
+<html>
+<head>
+<title>
+Compiler Status: linux
+</title>
+</head>
+<body bgcolor="#ffffff" text="#000000">
+<h1><img border border="0" src="../c++boost.gif" width="277" height="86"></h1>
+<h1>Compiler Status: linux</h1>
+
+<p><b>Run Date:</b> 20 Feb 2001 17:22 GMT</p>
+<p><b>System Configuration:</b> Linux 2.2.13 (CPU: i686)</p>
+<p>
+<table border="1" cellspacing="0" cellpadding="5">
+<tr>
+<td>Program</td>
+<td>Test<br>Type</td>
+<td>GNU<br>GCC<br>2.95.2</td>
+<td>GNU<br>GCC<br>2.95.2<br>STLport<br>4.0</td>
+<td>Comeau C++<br>4.2.44 beta3<br>STLport<br>4.0</td>
+<td>Comeau C++<br>4.2.44 beta3<br>(strict mode)<br>STLport<br>4.0</td>
+</tr>
+<tr>
+<td><a href="../libs/config/config_test.cpp">libs/config/config_test.cpp</a></td>
+<td>compile</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/array/array1.cpp">libs/array/array1.cpp</a></td>
+<td>run</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/concept_check/concept_check_test.cpp">libs/concept_check/concept_check_test.cpp</a></td>
+<td>compile</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/concept_check/class_concept_check_test.cpp">libs/concept_check/class_concept_check_test.cpp</a></td>
+<td>compile</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/concept_check/concept_check_fail_expected.cpp">libs/concept_check/concept_check_fail_expected.cpp</a></td>
+<td>link-fail</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/concept_check/class_concept_fail_expected.cpp">libs/concept_check/class_concept_fail_expected.cpp</a></td>
+<td>link-fail</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/conversion/cast_test.cpp">libs/conversion/cast_test.cpp</a></td>
+<td>run</td>
+<td><font color="#FF0000">Fail</font></td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/conversion/lexical_cast_test.cpp">libs/conversion/lexical_cast_test.cpp</a></td>
+<td>run</td>
+<td><font color="#FF0000">Fail</font></td>
+<td>Pass</td>
+<td>Pass</td>
+<td><font color="#FF0000">Fail</font></td>
+</tr>
+<tr>
+<td><a href="../libs/functional/function_test.cpp">libs/functional/function_test.cpp</a></td>
+<td>run</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/graph/test/graph.cpp">libs/graph/test/graph.cpp</a></td>
+<td>run</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/integer/cstdint_test.cpp">libs/integer/cstdint_test.cpp</a></td>
+<td>run</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/integer/integer_test.cpp">libs/integer/integer_test.cpp</a></td>
+<td>run</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/integer/integer_traits_test.cpp">libs/integer/integer_traits_test.cpp</a></td>
+<td>run</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/rational/rational_example.cpp">libs/rational/rational_example.cpp</a></td>
+<td>run</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/rational/rational_test.cpp">libs/rational/rational_test.cpp</a></td>
+<td>run</td>
+<td><font color="#FF0000">Fail</font></td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/random/random_test.cpp">libs/random/random_test.cpp</a></td>
+<td>run</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td><font color="#FF0000">Fail</font></td>
+</tr>
+<tr>
+<td><a href="../libs/random/random_demo.cpp">libs/random/random_demo.cpp</a></td>
+<td>run</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td><font color="#FF0000">Fail</font></td>
+</tr>
+<tr>
+<td><a href="../libs/regex/demo/regress/regex_test.cpp">libs/regex/demo/regress/regex_test.cpp</a></td>
+<td>run</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td><font color="#FF0000">Fail</font></td>
+</tr>
+<tr>
+<td><a href="../libs/regex/demo/regress/wregex_test.cpp">libs/regex/demo/regress/wregex_test.cpp</a></td>
+<td>run</td>
+<td><font color="#FF0000">Fail</font></td>
+<td>Pass</td>
+<td>Pass</td>
+<td><font color="#FF0000">Fail</font></td>
+</tr>
+<tr>
+<td><a href="../libs/smart_ptr/smart_ptr_test.cpp">libs/smart_ptr/smart_ptr_test.cpp</a></td>
+<td>run</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/static_assert/static_assert_test.cpp">libs/static_assert/static_assert_test.cpp</a></td>
+<td>compile</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/static_assert/static_assert_test_fail_1.cpp">libs/static_assert/static_assert_test_fail_1.cpp</a></td>
+<td>compile-fail</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/static_assert/static_assert_test_fail_2.cpp">libs/static_assert/static_assert_test_fail_2.cpp</a></td>
+<td>compile-fail</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/static_assert/static_assert_test_fail_3.cpp">libs/static_assert/static_assert_test_fail_3.cpp</a></td>
+<td>compile-fail</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/static_assert/static_assert_test_fail_4.cpp">libs/static_assert/static_assert_test_fail_4.cpp</a></td>
+<td>compile-fail</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/static_assert/static_assert_test_fail_5.cpp">libs/static_assert/static_assert_test_fail_5.cpp</a></td>
+<td>compile-fail</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/static_assert/static_assert_test_fail_6.cpp">libs/static_assert/static_assert_test_fail_6.cpp</a></td>
+<td>compile-fail</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/static_assert/static_assert_test_fail_7.cpp">libs/static_assert/static_assert_test_fail_7.cpp</a></td>
+<td>compile-fail</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/static_assert/static_assert_test_fail_8.cpp">libs/static_assert/static_assert_test_fail_8.cpp</a></td>
+<td>link-fail</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/timer/timer_test.cpp">libs/timer/timer_test.cpp</a></td>
+<td>compile</td>
+<td><font color="#FF0000">Fail</font></td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/type_traits/tests/alignment_test.cpp">libs/type_traits/tests/alignment_test.cpp</a></td>
+<td>run</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/type_traits/tests/arithmetic_traits_test.cpp">libs/type_traits/tests/arithmetic_traits_test.cpp</a></td>
+<td>run</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/type_traits/tests/composite_traits_test.cpp">libs/type_traits/tests/composite_traits_test.cpp</a></td>
+<td>run</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/type_traits/tests/cv_traits_test.cpp">libs/type_traits/tests/cv_traits_test.cpp</a></td>
+<td>run</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/type_traits/tests/is_convertible_test.cpp">libs/type_traits/tests/is_convertible_test.cpp</a></td>
+<td>run</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/type_traits/tests/is_same_test.cpp">libs/type_traits/tests/is_same_test.cpp</a></td>
+<td>run</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/type_traits/tests/object_type_traits_test.cpp">libs/type_traits/tests/object_type_traits_test.cpp</a></td>
+<td>run</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/type_traits/tests/transform_traits_test.cpp">libs/type_traits/tests/transform_traits_test.cpp</a></td>
+<td>run</td>
+<td>Pass</td>
+<td>Pass</td>
+<td><font color="#FF0000">Fail</font></td>
+<td><font color="#FF0000">Fail</font></td>
+</tr>
+<tr>
+<td><a href="../libs/utility/call_traits_test.cpp">libs/utility/call_traits_test.cpp</a></td>
+<td>run</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/utility/compressed_pair_test.cpp">libs/utility/compressed_pair_test.cpp</a></td>
+<td>run</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/utility/counting_iterator_test.cpp">libs/utility/counting_iterator_test.cpp</a></td>
+<td>run</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/utility/iterator_adaptor_test.cpp">libs/utility/iterator_adaptor_test.cpp</a></td>
+<td>run</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/utility/iter_adaptor_fail_expected1.cpp">libs/utility/iter_adaptor_fail_expected1.cpp</a></td>
+<td>compile-fail</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/utility/iter_adaptor_fail_expected2.cpp">libs/utility/iter_adaptor_fail_expected2.cpp</a></td>
+<td>compile-fail</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/utility/iterator_traits_test.cpp">libs/utility/iterator_traits_test.cpp</a></td>
+<td>run</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/utility/iterators_test.cpp">libs/utility/iterators_test.cpp</a></td>
+<td>run</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td><font color="#FF0000">Fail</font></td>
+</tr>
+<tr>
+<td><a href="../libs/utility/numeric_traits_test.cpp">libs/utility/numeric_traits_test.cpp</a></td>
+<td>run</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/utility/operators_test.cpp">libs/utility/operators_test.cpp</a></td>
+<td>run</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/utility/tie_example.cpp">libs/utility/tie_example.cpp</a></td>
+<td>run</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+</table></p>
+<p>
+Notes: A hand-crafted &lt;limits&gt; Standard header has been
+applied to all configurations.
+The tests were run on a GNU libc 2.2.1 system which has improved
+wide character support compared to previous versions.</p>
+</body>
+</html>
diff --git a/status/cs-solaris.html b/status/cs-solaris.html
new file mode 100644
index 0000000000..b89d57b2c7
--- /dev/null
+++ b/status/cs-solaris.html
@@ -0,0 +1,469 @@
+<html>
+<head>
+<title>
+Compiler Status: solaris
+</title>
+</head>
+<body bgcolor="#ffffff" text="#000000">
+<h1><img border border="0" src="../c++boost.gif" width="277" height="86"></h1>
+<h1>Compiler Status: solaris</h1>
+
+<p><b>Run Date:</b> 20 Feb 2001 17:24 GMT</p>
+<p><b>System Configuration:</b> SunOS 5.7 (CPU: sun4u)</p>
+<p>
+<table border="1" cellspacing="0" cellpadding="5">
+<tr>
+<td>Program</td>
+<td>Test<br>Type</td>
+<td>Sun<br>WorkShop 6.u1<br>C++ 5.2</td>
+<td>Sun<br>WorkShop 6.u1<br>C++ 5.2<br>64 bit</td>
+<td>KAI<br>KCC<br>4.0a</td>
+<td>KAI<br>KCC<br>3.4g</td>
+<td>GNU<br>GCC<br>2.95.2</td>
+</tr>
+<tr>
+<td><a href="../libs/config/config_test.cpp">libs/config/config_test.cpp</a></td>
+<td>compile</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/array/array1.cpp">libs/array/array1.cpp</a></td>
+<td>run</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/concept_check/concept_check_test.cpp">libs/concept_check/concept_check_test.cpp</a></td>
+<td>compile</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/concept_check/class_concept_check_test.cpp">libs/concept_check/class_concept_check_test.cpp</a></td>
+<td>compile</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/concept_check/concept_check_fail_expected.cpp">libs/concept_check/concept_check_fail_expected.cpp</a></td>
+<td>link-fail</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/concept_check/class_concept_fail_expected.cpp">libs/concept_check/class_concept_fail_expected.cpp</a></td>
+<td>link-fail</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/conversion/cast_test.cpp">libs/conversion/cast_test.cpp</a></td>
+<td>run</td>
+<td><font color="#FF0000">Fail</font></td>
+<td><font color="#FF0000">Fail</font></td>
+<td><font color="#FF0000">Fail</font></td>
+<td><font color="#FF0000">Fail</font></td>
+<td><font color="#FF0000">Fail</font></td>
+</tr>
+<tr>
+<td><a href="../libs/conversion/lexical_cast_test.cpp">libs/conversion/lexical_cast_test.cpp</a></td>
+<td>run</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td><font color="#FF0000">Fail</font></td>
+</tr>
+<tr>
+<td><a href="../libs/functional/function_test.cpp">libs/functional/function_test.cpp</a></td>
+<td>run</td>
+<td><font color="#FF0000">Fail</font></td>
+<td><font color="#FF0000">Fail</font></td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/graph/test/graph.cpp">libs/graph/test/graph.cpp</a></td>
+<td>run</td>
+<td><font color="#FF0000">Fail</font></td>
+<td><font color="#FF0000">Fail</font></td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/integer/cstdint_test.cpp">libs/integer/cstdint_test.cpp</a></td>
+<td>run</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/integer/integer_test.cpp">libs/integer/integer_test.cpp</a></td>
+<td>run</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td><font color="#FF0000">Fail</font></td>
+</tr>
+<tr>
+<td><a href="../libs/integer/integer_traits_test.cpp">libs/integer/integer_traits_test.cpp</a></td>
+<td>run</td>
+<td><font color="#FF0000">Fail</font></td>
+<td><font color="#FF0000">Fail</font></td>
+<td><font color="#FF0000">Fail</font></td>
+<td><font color="#FF0000">Fail</font></td>
+<td><font color="#FF0000">Fail</font></td>
+</tr>
+<tr>
+<td><a href="../libs/rational/rational_example.cpp">libs/rational/rational_example.cpp</a></td>
+<td>run</td>
+<td><font color="#FF0000">Fail</font></td>
+<td><font color="#FF0000">Fail</font></td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/rational/rational_test.cpp">libs/rational/rational_test.cpp</a></td>
+<td>run</td>
+<td><font color="#FF0000">Fail</font></td>
+<td><font color="#FF0000">Fail</font></td>
+<td>Pass</td>
+<td>Pass</td>
+<td><font color="#FF0000">Fail</font></td>
+</tr>
+<tr>
+<td><a href="../libs/random/random_test.cpp">libs/random/random_test.cpp</a></td>
+<td>run</td>
+<td><font color="#FF0000">Fail</font></td>
+<td><font color="#FF0000">Fail</font></td>
+<td>Pass</td>
+<td>Pass</td>
+<td><font color="#FF0000">Fail</font></td>
+</tr>
+<tr>
+<td><a href="../libs/random/random_demo.cpp">libs/random/random_demo.cpp</a></td>
+<td>run</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td><font color="#FF0000">Fail</font></td>
+</tr>
+<tr>
+<td><a href="../libs/regex/demo/regress/regex_test.cpp">libs/regex/demo/regress/regex_test.cpp</a></td>
+<td>run</td>
+<td><font color="#FF0000">Fail</font></td>
+<td><font color="#FF0000">Fail</font></td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/regex/demo/regress/wregex_test.cpp">libs/regex/demo/regress/wregex_test.cpp</a></td>
+<td>run</td>
+<td><font color="#FF0000">Fail</font></td>
+<td><font color="#FF0000">Fail</font></td>
+<td>Pass</td>
+<td><font color="#FF0000">Fail</font></td>
+<td><font color="#FF0000">Fail</font></td>
+</tr>
+<tr>
+<td><a href="../libs/smart_ptr/smart_ptr_test.cpp">libs/smart_ptr/smart_ptr_test.cpp</a></td>
+<td>run</td>
+<td><font color="#FF0000">Fail</font></td>
+<td><font color="#FF0000">Fail</font></td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/static_assert/static_assert_test.cpp">libs/static_assert/static_assert_test.cpp</a></td>
+<td>compile</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/static_assert/static_assert_test_fail_1.cpp">libs/static_assert/static_assert_test_fail_1.cpp</a></td>
+<td>compile-fail</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/static_assert/static_assert_test_fail_2.cpp">libs/static_assert/static_assert_test_fail_2.cpp</a></td>
+<td>compile-fail</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/static_assert/static_assert_test_fail_3.cpp">libs/static_assert/static_assert_test_fail_3.cpp</a></td>
+<td>compile-fail</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/static_assert/static_assert_test_fail_4.cpp">libs/static_assert/static_assert_test_fail_4.cpp</a></td>
+<td>compile-fail</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/static_assert/static_assert_test_fail_5.cpp">libs/static_assert/static_assert_test_fail_5.cpp</a></td>
+<td>compile-fail</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/static_assert/static_assert_test_fail_6.cpp">libs/static_assert/static_assert_test_fail_6.cpp</a></td>
+<td>compile-fail</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/static_assert/static_assert_test_fail_7.cpp">libs/static_assert/static_assert_test_fail_7.cpp</a></td>
+<td>compile-fail</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/static_assert/static_assert_test_fail_8.cpp">libs/static_assert/static_assert_test_fail_8.cpp</a></td>
+<td>link-fail</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/timer/timer_test.cpp">libs/timer/timer_test.cpp</a></td>
+<td>compile</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td><font color="#FF0000">Fail</font></td>
+</tr>
+<tr>
+<td><a href="../libs/type_traits/tests/alignment_test.cpp">libs/type_traits/tests/alignment_test.cpp</a></td>
+<td>run</td>
+<td><font color="#FF0000">Fail</font></td>
+<td><font color="#FF0000">Fail</font></td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/type_traits/tests/arithmetic_traits_test.cpp">libs/type_traits/tests/arithmetic_traits_test.cpp</a></td>
+<td>run</td>
+<td><font color="#FF0000">Fail</font></td>
+<td><font color="#FF0000">Fail</font></td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/type_traits/tests/composite_traits_test.cpp">libs/type_traits/tests/composite_traits_test.cpp</a></td>
+<td>run</td>
+<td><font color="#FF0000">Fail</font></td>
+<td><font color="#FF0000">Fail</font></td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/type_traits/tests/cv_traits_test.cpp">libs/type_traits/tests/cv_traits_test.cpp</a></td>
+<td>run</td>
+<td><font color="#FF0000">Fail</font></td>
+<td><font color="#FF0000">Fail</font></td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/type_traits/tests/is_convertible_test.cpp">libs/type_traits/tests/is_convertible_test.cpp</a></td>
+<td>run</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/type_traits/tests/is_same_test.cpp">libs/type_traits/tests/is_same_test.cpp</a></td>
+<td>run</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/type_traits/tests/object_type_traits_test.cpp">libs/type_traits/tests/object_type_traits_test.cpp</a></td>
+<td>run</td>
+<td><font color="#FF0000">Fail</font></td>
+<td><font color="#FF0000">Fail</font></td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/type_traits/tests/transform_traits_test.cpp">libs/type_traits/tests/transform_traits_test.cpp</a></td>
+<td>run</td>
+<td><font color="#FF0000">Fail</font></td>
+<td><font color="#FF0000">Fail</font></td>
+<td><font color="#FF0000">Fail</font></td>
+<td><font color="#FF0000">Fail</font></td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/utility/call_traits_test.cpp">libs/utility/call_traits_test.cpp</a></td>
+<td>run</td>
+<td><font color="#FF0000">Fail</font></td>
+<td><font color="#FF0000">Fail</font></td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/utility/compressed_pair_test.cpp">libs/utility/compressed_pair_test.cpp</a></td>
+<td>run</td>
+<td><font color="#FF0000">Fail</font></td>
+<td><font color="#FF0000">Fail</font></td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/utility/counting_iterator_test.cpp">libs/utility/counting_iterator_test.cpp</a></td>
+<td>run</td>
+<td><font color="#FF0000">Fail</font></td>
+<td><font color="#FF0000">Fail</font></td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/utility/iterator_adaptor_test.cpp">libs/utility/iterator_adaptor_test.cpp</a></td>
+<td>run</td>
+<td><font color="#FF0000">Fail</font></td>
+<td><font color="#FF0000">Fail</font></td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/utility/iter_adaptor_fail_expected1.cpp">libs/utility/iter_adaptor_fail_expected1.cpp</a></td>
+<td>compile-fail</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/utility/iter_adaptor_fail_expected2.cpp">libs/utility/iter_adaptor_fail_expected2.cpp</a></td>
+<td>compile-fail</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/utility/iterator_traits_test.cpp">libs/utility/iterator_traits_test.cpp</a></td>
+<td>run</td>
+<td><font color="#FF0000">Fail</font></td>
+<td><font color="#FF0000">Fail</font></td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/utility/iterators_test.cpp">libs/utility/iterators_test.cpp</a></td>
+<td>run</td>
+<td><font color="#FF0000">Fail</font></td>
+<td><font color="#FF0000">Fail</font></td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/utility/numeric_traits_test.cpp">libs/utility/numeric_traits_test.cpp</a></td>
+<td>run</td>
+<td><font color="#FF0000">Fail</font></td>
+<td><font color="#FF0000">Fail</font></td>
+<td>Pass</td>
+<td><font color="#FF0000">Fail</font></td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/utility/operators_test.cpp">libs/utility/operators_test.cpp</a></td>
+<td>run</td>
+<td><font color="#FF0000">Fail</font></td>
+<td><font color="#FF0000">Fail</font></td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/utility/tie_example.cpp">libs/utility/tie_example.cpp</a></td>
+<td>run</td>
+<td><font color="#FF0000">Fail</font></td>
+<td><font color="#FF0000">Fail</font></td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+</table></p>
+<p>
+</p>
+</body>
+</html>
diff --git a/status/cs-tru64.html b/status/cs-tru64.html
new file mode 100644
index 0000000000..2827b4de8f
--- /dev/null
+++ b/status/cs-tru64.html
@@ -0,0 +1,321 @@
+<html>
+<head>
+<title>
+Compiler Status: tru64
+</title>
+</head>
+<body bgcolor="#ffffff" text="#000000">
+<h1><img border border="0" src="../c++boost.gif" width="277" height="86"></h1>
+<h1>Compiler Status: tru64</h1>
+
+<p><b>Run Date:</b> 20 Feb 2001 17:55 GMT</p>
+<p><b>System Configuration:</b> OSF1 V5.0 (CPU: alpha)</p>
+<p>
+<table border="1" cellspacing="0" cellpadding="5">
+<tr>
+<td>Program</td>
+<td>Test<br>Type</td>
+<td>Compaq C++<br>6.2-024</td>
+<td>Compaq C++<br>6.2-024<br>clib</td>
+</tr>
+<tr>
+<td><a href="../libs/config/config_test.cpp">libs/config/config_test.cpp</a></td>
+<td>compile</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/array/array1.cpp">libs/array/array1.cpp</a></td>
+<td>run</td>
+<td><font color="#FF0000">Fail</font></td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/concept_check/concept_check_test.cpp">libs/concept_check/concept_check_test.cpp</a></td>
+<td>compile</td>
+<td><font color="#FF0000">Fail</font></td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/concept_check/class_concept_check_test.cpp">libs/concept_check/class_concept_check_test.cpp</a></td>
+<td>compile</td>
+<td><font color="#FF0000">Fail</font></td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/concept_check/concept_check_fail_expected.cpp">libs/concept_check/concept_check_fail_expected.cpp</a></td>
+<td>link-fail</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/concept_check/class_concept_fail_expected.cpp">libs/concept_check/class_concept_fail_expected.cpp</a></td>
+<td>link-fail</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/conversion/cast_test.cpp">libs/conversion/cast_test.cpp</a></td>
+<td>run</td>
+<td><font color="#FF0000">Fail</font></td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/conversion/lexical_cast_test.cpp">libs/conversion/lexical_cast_test.cpp</a></td>
+<td>run</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/functional/function_test.cpp">libs/functional/function_test.cpp</a></td>
+<td>run</td>
+<td><font color="#FF0000">Fail</font></td>
+<td><font color="#FF0000">Fail</font></td>
+</tr>
+<tr>
+<td><a href="../libs/graph/test/graph.cpp">libs/graph/test/graph.cpp</a></td>
+<td>run</td>
+<td><font color="#FF0000">Fail</font></td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/integer/cstdint_test.cpp">libs/integer/cstdint_test.cpp</a></td>
+<td>run</td>
+<td><font color="#FF0000">Fail</font></td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/integer/integer_test.cpp">libs/integer/integer_test.cpp</a></td>
+<td>run</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/integer/integer_traits_test.cpp">libs/integer/integer_traits_test.cpp</a></td>
+<td>run</td>
+<td><font color="#FF0000">Fail</font></td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/rational/rational_example.cpp">libs/rational/rational_example.cpp</a></td>
+<td>run</td>
+<td><font color="#FF0000">Fail</font></td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/rational/rational_test.cpp">libs/rational/rational_test.cpp</a></td>
+<td>run</td>
+<td><font color="#FF0000">Fail</font></td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/random/random_test.cpp">libs/random/random_test.cpp</a></td>
+<td>run</td>
+<td><font color="#FF0000">Fail</font></td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/random/random_demo.cpp">libs/random/random_demo.cpp</a></td>
+<td>run</td>
+<td><font color="#FF0000">Fail</font></td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/regex/demo/regress/regex_test.cpp">libs/regex/demo/regress/regex_test.cpp</a></td>
+<td>run</td>
+<td><font color="#FF0000">Fail</font></td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/regex/demo/regress/wregex_test.cpp">libs/regex/demo/regress/wregex_test.cpp</a></td>
+<td>run</td>
+<td><font color="#FF0000">Fail</font></td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/smart_ptr/smart_ptr_test.cpp">libs/smart_ptr/smart_ptr_test.cpp</a></td>
+<td>run</td>
+<td><font color="#FF0000">Fail</font></td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/static_assert/static_assert_test.cpp">libs/static_assert/static_assert_test.cpp</a></td>
+<td>compile</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/static_assert/static_assert_test_fail_1.cpp">libs/static_assert/static_assert_test_fail_1.cpp</a></td>
+<td>compile-fail</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/static_assert/static_assert_test_fail_2.cpp">libs/static_assert/static_assert_test_fail_2.cpp</a></td>
+<td>compile-fail</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/static_assert/static_assert_test_fail_3.cpp">libs/static_assert/static_assert_test_fail_3.cpp</a></td>
+<td>compile-fail</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/static_assert/static_assert_test_fail_4.cpp">libs/static_assert/static_assert_test_fail_4.cpp</a></td>
+<td>compile-fail</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/static_assert/static_assert_test_fail_5.cpp">libs/static_assert/static_assert_test_fail_5.cpp</a></td>
+<td>compile-fail</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/static_assert/static_assert_test_fail_6.cpp">libs/static_assert/static_assert_test_fail_6.cpp</a></td>
+<td>compile-fail</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/static_assert/static_assert_test_fail_7.cpp">libs/static_assert/static_assert_test_fail_7.cpp</a></td>
+<td>compile-fail</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/static_assert/static_assert_test_fail_8.cpp">libs/static_assert/static_assert_test_fail_8.cpp</a></td>
+<td>link-fail</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/timer/timer_test.cpp">libs/timer/timer_test.cpp</a></td>
+<td>compile</td>
+<td><font color="#FF0000">Fail</font></td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/type_traits/tests/alignment_test.cpp">libs/type_traits/tests/alignment_test.cpp</a></td>
+<td>run</td>
+<td><font color="#FF0000">Fail</font></td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/type_traits/tests/arithmetic_traits_test.cpp">libs/type_traits/tests/arithmetic_traits_test.cpp</a></td>
+<td>run</td>
+<td><font color="#FF0000">Fail</font></td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/type_traits/tests/composite_traits_test.cpp">libs/type_traits/tests/composite_traits_test.cpp</a></td>
+<td>run</td>
+<td><font color="#FF0000">Fail</font></td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/type_traits/tests/cv_traits_test.cpp">libs/type_traits/tests/cv_traits_test.cpp</a></td>
+<td>run</td>
+<td><font color="#FF0000">Fail</font></td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/type_traits/tests/is_convertible_test.cpp">libs/type_traits/tests/is_convertible_test.cpp</a></td>
+<td>run</td>
+<td><font color="#FF0000">Fail</font></td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/type_traits/tests/is_same_test.cpp">libs/type_traits/tests/is_same_test.cpp</a></td>
+<td>run</td>
+<td><font color="#FF0000">Fail</font></td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/type_traits/tests/object_type_traits_test.cpp">libs/type_traits/tests/object_type_traits_test.cpp</a></td>
+<td>run</td>
+<td><font color="#FF0000">Fail</font></td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/type_traits/tests/transform_traits_test.cpp">libs/type_traits/tests/transform_traits_test.cpp</a></td>
+<td>run</td>
+<td><font color="#FF0000">Fail</font></td>
+<td><font color="#FF0000">Fail</font></td>
+</tr>
+<tr>
+<td><a href="../libs/utility/call_traits_test.cpp">libs/utility/call_traits_test.cpp</a></td>
+<td>run</td>
+<td><font color="#FF0000">Fail</font></td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/utility/compressed_pair_test.cpp">libs/utility/compressed_pair_test.cpp</a></td>
+<td>run</td>
+<td><font color="#FF0000">Fail</font></td>
+<td><font color="#FF0000">Fail</font></td>
+</tr>
+<tr>
+<td><a href="../libs/utility/counting_iterator_test.cpp">libs/utility/counting_iterator_test.cpp</a></td>
+<td>run</td>
+<td><font color="#FF0000">Fail</font></td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/utility/iterator_adaptor_test.cpp">libs/utility/iterator_adaptor_test.cpp</a></td>
+<td>run</td>
+<td><font color="#FF0000">Fail</font></td>
+<td><font color="#FF0000">Fail</font></td>
+</tr>
+<tr>
+<td><a href="../libs/utility/iter_adaptor_fail_expected1.cpp">libs/utility/iter_adaptor_fail_expected1.cpp</a></td>
+<td>compile-fail</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/utility/iter_adaptor_fail_expected2.cpp">libs/utility/iter_adaptor_fail_expected2.cpp</a></td>
+<td>compile-fail</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/utility/iterator_traits_test.cpp">libs/utility/iterator_traits_test.cpp</a></td>
+<td>run</td>
+<td><font color="#FF0000">Fail</font></td>
+<td><font color="#FF0000">Fail</font></td>
+</tr>
+<tr>
+<td><a href="../libs/utility/iterators_test.cpp">libs/utility/iterators_test.cpp</a></td>
+<td>run</td>
+<td><font color="#FF0000">Fail</font></td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/utility/numeric_traits_test.cpp">libs/utility/numeric_traits_test.cpp</a></td>
+<td>run</td>
+<td><font color="#FF0000">Fail</font></td>
+<td><font color="#FF0000">Fail</font></td>
+</tr>
+<tr>
+<td><a href="../libs/utility/operators_test.cpp">libs/utility/operators_test.cpp</a></td>
+<td>run</td>
+<td><font color="#FF0000">Fail</font></td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/utility/tie_example.cpp">libs/utility/tie_example.cpp</a></td>
+<td>run</td>
+<td><font color="#FF0000">Fail</font></td>
+<td>Pass</td>
+</tr>
+</table></p>
+<p>
+Note: For the 'clib' configuration, the missing new-style C
+library headers &lt;cXXX&gt; have been supplied.
+</p>
+</body>
+</html>
diff --git a/status/cs-win32.html b/status/cs-win32.html
new file mode 100644
index 0000000000..849b2b207e
--- /dev/null
+++ b/status/cs-win32.html
@@ -0,0 +1,579 @@
+<html>
+<head>
+<title>
+Compiler Status: win32
+</title>
+</head>
+<body bgcolor="#ffffff" text="#000000">
+<h1><img border border="0" src="../c++boost.gif" width="277" height="86"></h1>
+<h1>Compiler Status: win32</h1>
+
+<p><b>Run Date:</b> 14 Mar 2001 15:18 GMT</p>
+<p><b>System Configuration:</b> Microsoft Windows 32bit</p>
+<p>
+<table border="1" cellspacing="0" cellpadding="5">
+<tr>
+<td>Program</td>
+<td>Test<br>Type</td>
+<td>Borland<br>BCC<br>5.5.1</td>
+<td>Metrowerks<br>CodeWarrior<br>6.0</td>
+<td>Microsoft<br>VC++<br>6.0 SP4</td>
+<td>Microsoft<br>VC++<br>6.0 SP4<br>STLport<br>4.0</td>
+<td>GNU GCC<br>2.95.2-6<br>Cygwin 1.1.7</td>
+<td>Intel C++<br>5.0<br>MS lib<br>6.0</td>
+</tr>
+<tr>
+<td><a href="../libs/config/config_test.cpp">libs/config/config_test.cpp</a></td>
+<td>compile</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/array/array1.cpp">libs/array/array1.cpp</a></td>
+<td>run</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/concept_check/concept_check_test.cpp">libs/concept_check/concept_check_test.cpp</a></td>
+<td>compile</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/concept_check/class_concept_check_test.cpp">libs/concept_check/class_concept_check_test.cpp</a></td>
+<td>compile</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/concept_check/concept_check_fail_expected.cpp">libs/concept_check/concept_check_fail_expected.cpp</a></td>
+<td>link-fail</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/concept_check/class_concept_fail_expected.cpp">libs/concept_check/class_concept_fail_expected.cpp</a></td>
+<td>link-fail</td>
+<td><font color="#FF0000">Fail</font></td>
+<td>Pass</td>
+<td><font color="#FF0000">Fail</font></td>
+<td><font color="#FF0000">Fail</font></td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/conversion/cast_test.cpp">libs/conversion/cast_test.cpp</a></td>
+<td>run</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td><font color="#FF0000">Fail</font></td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/conversion/lexical_cast_test.cpp">libs/conversion/lexical_cast_test.cpp</a></td>
+<td>run</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td><font color="#FF0000">Fail</font></td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/functional/function_test.cpp">libs/functional/function_test.cpp</a></td>
+<td>run</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td><font color="#FF0000">Fail</font></td>
+</tr>
+<tr>
+<td><a href="../libs/graph/test/graph.cpp">libs/graph/test/graph.cpp</a></td>
+<td>run</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td><font color="#FF0000">Fail</font></td>
+</tr>
+<tr>
+<td><a href="../libs/integer/cstdint_test.cpp">libs/integer/cstdint_test.cpp</a></td>
+<td>run</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/integer/integer_test.cpp">libs/integer/integer_test.cpp</a></td>
+<td>run</td>
+<td>Pass</td>
+<td>Pass</td>
+<td><font color="#FF0000">Fail</font></td>
+<td><font color="#FF0000">Fail</font></td>
+<td><font color="#FF0000">Fail</font></td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/integer/integer_traits_test.cpp">libs/integer/integer_traits_test.cpp</a></td>
+<td>run</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td><font color="#FF0000">Fail</font></td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/pool/test/test_pool_alloc.cpp">libs/pool/test/test_pool_alloc.cpp</a></td>
+<td>run</td>
+<td>Pass</td>
+<td>Pass</td>
+<td><font color="#FF0000">Fail</font></td>
+<td><font color="#FF0000">Fail</font></td>
+<td><font color="#FF0000">Fail</font></td>
+<td><font color="#FF0000">Fail</font></td>
+</tr>
+<tr>
+<td><a href="../libs/rational/rational_example.cpp">libs/rational/rational_example.cpp</a></td>
+<td>run</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/rational/rational_test.cpp">libs/rational/rational_test.cpp</a></td>
+<td>run</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td><font color="#FF0000">Fail</font></td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/random/random_test.cpp">libs/random/random_test.cpp</a></td>
+<td>run</td>
+<td>Pass</td>
+<td>Pass</td>
+<td><font color="#FF0000">Fail</font></td>
+<td><font color="#FF0000">Fail</font></td>
+<td><font color="#FF0000">Fail</font></td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/random/random_demo.cpp">libs/random/random_demo.cpp</a></td>
+<td>run</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td><font color="#FF0000">Fail</font></td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/regex/demo/regress/regex_test.cpp">libs/regex/demo/regress/regex_test.cpp</a></td>
+<td>run</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td><font color="#FF0000">Fail</font></td>
+</tr>
+<tr>
+<td><a href="../libs/regex/demo/regress/wregex_test.cpp">libs/regex/demo/regress/wregex_test.cpp</a></td>
+<td>run</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td><font color="#FF0000">Fail</font></td>
+<td><font color="#FF0000">Fail</font></td>
+</tr>
+<tr>
+<td><a href="../libs/smart_ptr/smart_ptr_test.cpp">libs/smart_ptr/smart_ptr_test.cpp</a></td>
+<td>run</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/static_assert/static_assert_test.cpp">libs/static_assert/static_assert_test.cpp</a></td>
+<td>compile</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/static_assert/static_assert_test_fail_1.cpp">libs/static_assert/static_assert_test_fail_1.cpp</a></td>
+<td>compile-fail</td>
+<td>Pass</td>
+<td><font color="#FF0000">Fail</font></td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/static_assert/static_assert_test_fail_2.cpp">libs/static_assert/static_assert_test_fail_2.cpp</a></td>
+<td>compile-fail</td>
+<td>Pass</td>
+<td><font color="#FF0000">Fail</font></td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/static_assert/static_assert_test_fail_3.cpp">libs/static_assert/static_assert_test_fail_3.cpp</a></td>
+<td>compile-fail</td>
+<td>Pass</td>
+<td><font color="#FF0000">Fail</font></td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/static_assert/static_assert_test_fail_4.cpp">libs/static_assert/static_assert_test_fail_4.cpp</a></td>
+<td>compile-fail</td>
+<td>Pass</td>
+<td><font color="#FF0000">Fail</font></td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td><font color="#FF0000">Fail</font></td>
+</tr>
+<tr>
+<td><a href="../libs/static_assert/static_assert_test_fail_5.cpp">libs/static_assert/static_assert_test_fail_5.cpp</a></td>
+<td>compile-fail</td>
+<td>Pass</td>
+<td><font color="#FF0000">Fail</font></td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/static_assert/static_assert_test_fail_6.cpp">libs/static_assert/static_assert_test_fail_6.cpp</a></td>
+<td>compile-fail</td>
+<td>Pass</td>
+<td><font color="#FF0000">Fail</font></td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/static_assert/static_assert_test_fail_7.cpp">libs/static_assert/static_assert_test_fail_7.cpp</a></td>
+<td>compile-fail</td>
+<td>Pass</td>
+<td><font color="#FF0000">Fail</font></td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/static_assert/static_assert_test_fail_8.cpp">libs/static_assert/static_assert_test_fail_8.cpp</a></td>
+<td>link-fail</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/test/example/test_tools_example.cpp">libs/test/example/test_tools_example.cpp</a></td>
+<td>run</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/test/test/test_tools_fail2.cpp">libs/test/test/test_tools_fail2.cpp</a></td>
+<td>run-fail</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/timer/timer_test.cpp">libs/timer/timer_test.cpp</a></td>
+<td>compile</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td><font color="#FF0000">Fail</font></td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/type_traits/tests/alignment_test.cpp">libs/type_traits/tests/alignment_test.cpp</a></td>
+<td>run</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/type_traits/tests/arithmetic_traits_test.cpp">libs/type_traits/tests/arithmetic_traits_test.cpp</a></td>
+<td>run</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/type_traits/tests/composite_traits_test.cpp">libs/type_traits/tests/composite_traits_test.cpp</a></td>
+<td>run</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/type_traits/tests/cv_traits_test.cpp">libs/type_traits/tests/cv_traits_test.cpp</a></td>
+<td>run</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/type_traits/tests/is_convertible_test.cpp">libs/type_traits/tests/is_convertible_test.cpp</a></td>
+<td>run</td>
+<td><font color="#FF0000">Fail</font></td>
+<td><font color="#FF0000">Fail</font></td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/type_traits/tests/is_same_test.cpp">libs/type_traits/tests/is_same_test.cpp</a></td>
+<td>run</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/type_traits/tests/object_type_traits_test.cpp">libs/type_traits/tests/object_type_traits_test.cpp</a></td>
+<td>run</td>
+<td>Pass</td>
+<td><font color="#FF0000">Fail</font></td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/type_traits/tests/transform_traits_test.cpp">libs/type_traits/tests/transform_traits_test.cpp</a></td>
+<td>run</td>
+<td>Pass</td>
+<td>Pass</td>
+<td><font color="#FF0000">Fail</font></td>
+<td><font color="#FF0000">Fail</font></td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/utility/call_traits_test.cpp">libs/utility/call_traits_test.cpp</a></td>
+<td>run</td>
+<td>Pass</td>
+<td><font color="#FF0000">Fail</font></td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td><font color="#FF0000">Fail</font></td>
+</tr>
+<tr>
+<td><a href="../libs/utility/compressed_pair_test.cpp">libs/utility/compressed_pair_test.cpp</a></td>
+<td>run</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/utility/counting_iterator_test.cpp">libs/utility/counting_iterator_test.cpp</a></td>
+<td>run</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/utility/iterator_adaptor_test.cpp">libs/utility/iterator_adaptor_test.cpp</a></td>
+<td>run</td>
+<td>Pass</td>
+<td><font color="#FF0000">Fail</font></td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td><font color="#FF0000">Fail</font></td>
+</tr>
+<tr>
+<td><a href="../libs/utility/transform_iterator_test.cpp">libs/utility/transform_iterator_test.cpp</a></td>
+<td>run</td>
+<td><font color="#FF0000">Fail</font></td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/utility/indirect_iterator_test.cpp">libs/utility/indirect_iterator_test.cpp</a></td>
+<td>run</td>
+<td><font color="#FF0000">Fail</font></td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td><font color="#FF0000">Fail</font></td>
+</tr>
+<tr>
+<td><a href="../libs/utility/iter_traits_gen_test.cpp">libs/utility/iter_traits_gen_test.cpp</a></td>
+<td>run</td>
+<td><font color="#FF0000">Fail</font></td>
+<td><font color="#FF0000">Fail</font></td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td><font color="#FF0000">Fail</font></td>
+</tr>
+<tr>
+<td><a href="../libs/utility/iter_adaptor_fail_expected1.cpp">libs/utility/iter_adaptor_fail_expected1.cpp</a></td>
+<td>compile-fail</td>
+<td>Pass</td>
+<td><font color="#FF0000">Fail</font></td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/utility/iter_adaptor_fail_expected2.cpp">libs/utility/iter_adaptor_fail_expected2.cpp</a></td>
+<td>compile-fail</td>
+<td>Pass</td>
+<td><font color="#FF0000">Fail</font></td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/utility/iterator_traits_test.cpp">libs/utility/iterator_traits_test.cpp</a></td>
+<td>run</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td><font color="#FF0000">Fail</font></td>
+</tr>
+<tr>
+<td><a href="../libs/utility/iterators_test.cpp">libs/utility/iterators_test.cpp</a></td>
+<td>run</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/utility/numeric_traits_test.cpp">libs/utility/numeric_traits_test.cpp</a></td>
+<td>run</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td><font color="#FF0000">Fail</font></td>
+</tr>
+<tr>
+<td><a href="../libs/utility/operators_test.cpp">libs/utility/operators_test.cpp</a></td>
+<td>run</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+<tr>
+<td><a href="../libs/utility/tie_example.cpp">libs/utility/tie_example.cpp</a></td>
+<td>run</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+<td>Pass</td>
+</tr>
+</table></p>
+<p>
+</p>
+</body>
+</html>
diff --git a/status/regression.cfg b/status/regression.cfg
new file mode 100644
index 0000000000..e5882cb321
--- /dev/null
+++ b/status/regression.cfg
@@ -0,0 +1,69 @@
+// Boost primary regression test configuration file
+//
+// Please keep the entries ordered alphabetically by the test's file name.
+//
+// ChangeLog:
+// 08 Mar 01 - Added indirect_iterator_test.cpp and transform_iterator_test.cpp (Jeremy Siek)
+// 05 Feb 01 - Added rational_test.cpp (provided by Paul Moore)
+// 24 Jan 01 - Added counting_iterator_test.cpp (David Abrahams)
+// 22 Jan 01 - Added iter_adaptor_fail_expected1-3.cpp (Jeremy Siek)
+// 21 Jan 01 - Added numeric_traits_test.cpp (David Abrahams)
+// 20 Jan 01 - Added iterator_traits_test.cpp (David Abrahams)
+
+compile libs/config/config_test.cpp
+run libs/array/array1.cpp
+compile libs/concept_check/concept_check_test.cpp
+compile libs/concept_check/class_concept_check_test.cpp
+link-fail libs/concept_check/concept_check_fail_expected.cpp
+link-fail libs/concept_check/class_concept_fail_expected.cpp
+run libs/conversion/cast_test.cpp
+run libs/conversion/lexical_cast_test.cpp
+run libs/functional/function_test.cpp
+run libs/graph/test/graph.cpp
+run libs/integer/cstdint_test.cpp
+run libs/integer/integer_test.cpp
+run libs/integer/integer_traits_test.cpp
+run libs/pool/test/test_pool_alloc.cpp
+run libs/rational/rational_example.cpp
+run libs/rational/rational_test.cpp
+run libs/random/random_test.cpp
+run libs/random/random_demo.cpp
+run libs/regex/demo/regress/regex_test.cpp %boost/libs/regex/demo/regress/tests.txt
+run libs/regex/demo/regress/wregex_test.cpp %boost/libs/regex/demo/regress/tests.txt
+run libs/smart_ptr/smart_ptr_test.cpp
+compile libs/static_assert/static_assert_test.cpp
+compile-fail libs/static_assert/static_assert_test_fail_1.cpp
+compile-fail libs/static_assert/static_assert_test_fail_2.cpp
+compile-fail libs/static_assert/static_assert_test_fail_3.cpp
+compile-fail libs/static_assert/static_assert_test_fail_4.cpp
+compile-fail libs/static_assert/static_assert_test_fail_5.cpp
+compile-fail libs/static_assert/static_assert_test_fail_6.cpp
+compile-fail libs/static_assert/static_assert_test_fail_7.cpp
+link-fail libs/static_assert/static_assert_test_fail_8.cpp
+run libs/test/example/test_tools_example.cpp
+run-fail libs/test/test/test_tools_fail2.cpp
+compile libs/timer/timer_test.cpp
+run libs/type_traits/tests/alignment_test.cpp
+run libs/type_traits/tests/arithmetic_traits_test.cpp
+run libs/type_traits/tests/composite_traits_test.cpp
+run libs/type_traits/tests/cv_traits_test.cpp
+run libs/type_traits/tests/is_convertible_test.cpp
+run libs/type_traits/tests/is_same_test.cpp
+run libs/type_traits/tests/object_type_traits_test.cpp
+run libs/type_traits/tests/transform_traits_test.cpp
+run libs/utility/call_traits_test.cpp -u
+run libs/utility/compressed_pair_test.cpp -u
+run libs/utility/counting_iterator_test.cpp
+run libs/utility/iterator_adaptor_test.cpp
+run libs/utility/transform_iterator_test.cpp
+run libs/utility/indirect_iterator_test.cpp
+run libs/utility/iter_traits_gen_test.cpp
+compile-fail libs/utility/iter_adaptor_fail_expected1.cpp
+compile-fail libs/utility/iter_adaptor_fail_expected2.cpp
+run libs/utility/iterator_traits_test.cpp
+run libs/utility/iterators_test.cpp
+run libs/utility/numeric_traits_test.cpp
+run libs/utility/operators_test.cpp
+run libs/utility/tie_example.cpp
+
+
diff --git a/status/regression.cpp b/status/regression.cpp
new file mode 100644
index 0000000000..805b53d412
--- /dev/null
+++ b/status/regression.cpp
@@ -0,0 +1,487 @@
+/* boost regression test program
+ *
+ * Copyright Jens Maurer 2000
+ * Permission to use, copy, modify, sell, and distribute this software
+ * is hereby granted without free provided that the above copyright notice
+ * appears in all copies and that both that copyright notice and this
+ * permission notice appear in supporting documentation,
+ *
+ * Jens Maurer makes no representations about the suitability of this
+ * software for any purpose. It is provided "as is" without express or
+ * implied warranty.
+ *
+ * See http://www.boost.org for most recent version including documentation.
+ *
+ * 2001-01-23 made it compile with Borland (David Abrahams)
+ * 2001-01-22 added --diff option (Jens Maurer)
+ */
+
+#include <iostream>
+#include <string>
+#include <list>
+#include <map>
+#include <cstdlib>
+#include <fstream>
+#include <utility>
+#include <ctime>
+
+// It is OK to use boost headers which contain entirely inline code.
+#include <boost/config.hpp>
+#ifdef BOOST_NO_STDC_NAMESPACE
+ namespace std {
+ using ::exit; using ::system; using ::strftime; using ::gmtime;
+ using ::time; using ::time_t;
+ }
+#endif
+
+std::string get_host()
+{
+#if defined __linux__
+ return "linux";
+#elif defined __osf__
+ return "tru64";
+#elif defined __sgi
+ return "irix";
+#elif defined __sun
+ return "solaris";
+#elif defined _WIN32
+ return "win32";
+#elif defined __BEOS__
+ return "beos";
+#elif defined __hpux
+ return "hpux";
+#else
+# error Please adapt for your platform
+#endif
+}
+
+
+// retrieve precise system configuration as descriptive string
+#ifdef __unix
+
+#include <sys/utsname.h>
+
+std::string get_system_configuration()
+{
+ struct utsname ut; // "struct" is required for the DEC Tru64 compiler
+ if(uname(&ut) < 0)
+ return "";
+
+ std::string config = std::string(ut.sysname) + " " + ut.release;
+ config = config + " (CPU: " + ut.machine + ")";
+ return config;
+}
+
+#elif defined _WIN32
+
+std::string get_system_configuration()
+{
+ return "Microsoft Windows 32bit";
+}
+
+#elif defined __BEOS__
+
+std::string get_system_configuration()
+{
+ return "BeOS 5 Intel Edition";
+}
+
+#else
+# error Please adapt for your platform
+#endif
+
+
+struct configuration
+{
+ std::string compiler_config_file, test_config_file;
+ std::string boostpath;
+ std::string html_output;
+ bool highlight_differences;
+ std::string compiler, test;
+
+ // defaults
+ configuration()
+ : compiler_config_file("compiler.cfg"), test_config_file("regression.cfg"),
+ boostpath(".."), html_output("cs-" + get_host() + ".html"),
+ highlight_differences(false),
+ compiler("*"), test("") { }
+};
+
+configuration parse_command_line(char **first, char **last)
+{
+ configuration cfg;
+ bool output_redirected = false;
+ for( ; first != last; ++first) {
+ std::string arg = *first;
+ if(arg == "--config") {
+ cfg.compiler_config_file = *++first;
+ } else if(arg == "--tests") {
+ cfg.test_config_file = *++first;
+ } else if(arg == "--boost") {
+ cfg.boostpath = *++first;
+ } else if(arg == "-o" || arg == "--output") {
+ cfg.html_output = *++first;
+ output_redirected = true;
+ } else if(arg == "--diff") {
+ cfg.highlight_differences = true;
+ } else if(arg == "--compiler") {
+ cfg.compiler = *++first;
+ } else if(arg.substr(0,1) == "-") {
+ std::cerr << "usage: regression [-h | --help] [--config compiler.cfg]\n"
+ << " [--tests regression.cfg] [--boost path] [-o output.html] [--compiler <name>]\n"
+ << " [test]\n"
+ << " -h or --help print this help message\n"
+ << " --config <file> compiler configuration file (default: compiler.cfg)\n"
+ << " --tests <file> test configuration file (default: regression.cfg)\n"
+ << " --boost <path> filesystem path to main boost directory (default: ..)\n"
+ << " -o <file> name of output file (default: cs-OS.html)\n"
+ << " --diff highlight differences in output file\n"
+ << " --compiler <name> use only compiler <name> (default: *)\n"
+ << " test a single test, including the action (compile, run, etc.)\n";
+ std::exit(1);
+ } else {
+ // add the rest of the command line to the "test" line
+ for( ; first != last; ++first)
+ cfg.test += std::string(*first) + " ";
+ break;
+ }
+ }
+ if(cfg.test != "" && !output_redirected) {
+ std::cerr << "Error: Please specify the HTML output file explicitly\n"
+ << "(using \"--output file\") when running a single test only.\n";
+ std::exit(1);
+ }
+ return cfg;
+}
+
+
+struct entry
+{
+ std::string os, identifier, name, compile_only_command, compile_link_command, html;
+};
+
+// replace the first %name in s with value
+void replace(std::string & s,
+ const std::string & name, const std::string & value)
+{
+ std::string::size_type p = s.find(name);
+ if(p != std::string::npos)
+ s.replace(p, name.length(), value);
+}
+
+// replace all $XXX in s with the value of getenv("XXX")
+void replace_environment(std::string & s)
+{
+ std::string::size_type end = 0;
+ for(;;) {
+ std::string::size_type pos = s.find('$', end);
+ if(pos == std::string::npos)
+ break;
+ end = s.find_first_not_of("ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_", pos+1);
+ const char * env = getenv(s.substr(pos+1, end-pos-1).c_str());
+ if(env)
+ replace(s, s.substr(pos, end-pos), env);
+ else
+ break;
+ }
+}
+
+// get a string line, ignoring empty lines and comment lines
+void getstringline( std::ifstream & is, std::string & s )
+{
+ do {
+ std::getline( static_cast<std::istream&>(is), s ); // cast required by IRIX
+ } while ( is.good()
+ && (!s.size() || (s.size() >= 2 && s[0] == '/' && s[1] == '/')) );
+}
+
+// read the compiler configuration from file and push entry's to out
+template<class OutputIterator>
+void read_compiler_configuration(const std::string & file, OutputIterator out)
+{
+ std::ifstream f(file.c_str());
+ int lineno = 0;
+ while(f.good()) {
+ entry e;
+ getstringline(f, e.os);
+ getstringline(f, e.identifier);
+ getstringline(f, e.name);
+ getstringline(f, e.compile_only_command);
+ getstringline(f, e.compile_link_command);
+ getstringline(f, e.html);
+ *out = e;
+ ++out;
+ std::string l;
+ std::getline(f, l);
+ lineno += 6;
+ if(l != "") {
+ std::cerr << file << ", line " << lineno
+ << ": Empty line expected, got " << l << "\n";
+ std::exit(1);
+ }
+ }
+}
+
+const std::string pass_string = "Pass";
+const std::string fail_string = "<font color=\"#FF0000\">Fail</font>";
+
+// map test name to results, one character ("P" or "F") for each compiler
+typedef std::map<std::string, std::string> previous_results_type;
+
+previous_results_type read_previous_results(std::istream & is)
+{
+ previous_results_type result;
+ // finite state machine
+ enum { prefix, testname, command, testresult } status = prefix;
+ std::string line, current_test;
+ while(std::getline(is, line)) {
+ if(status == prefix) {
+ if(line.substr(0, 6) == "<table")
+ status = testname;
+ } else if(status == testname) {
+ if(line.substr(0, 6) == "<td><a") {
+ std::string::size_type pos = line.find(">", 5);
+ if(pos == std::string::npos || pos+1 >= line.size()) {
+ std::cerr << "Line '" << line << "' has unknown format.";
+ continue;
+ }
+ std::string::size_type pos_end = line.find("<", pos);
+ if(pos_end == std::string::npos) {
+ std::cerr << "Line '" << line << "' has unknown format.";
+ continue;
+ }
+ current_test = line.substr(pos+1, pos_end - (pos+1));
+ status = command;
+ } else if(line.substr(0, 8) == "</table>") {
+ break;
+ }
+ } else if(status == command) {
+ status = testresult;
+ } else if(status == testresult) {
+ if(line == "</tr>")
+ status = testname;
+ else if(line.find(pass_string) != std::string::npos)
+ result[current_test].append("P");
+ else if(line.find(fail_string) != std::string::npos)
+ result[current_test].append("F");
+ else
+ std::cerr << "Line '" << line << "' has unknown format.";
+ }
+ }
+ return result;
+}
+
+// run command (possibly needs portability adjustment)
+bool execute(const std::string & command)
+{
+ std::cout << command << std::endl; // fix: endl ensures cout ordering
+ int ret = std::system(command.c_str());
+ if(ret != 0)
+ std::cout << "Return code: " << ret << std::endl;
+ return ret == 0;
+}
+
+enum test_result {
+ ok = 0,
+ unknown_type,
+ compile_failed, compile_ok, link_failed, link_ok, run_failed, run_ok
+};
+
+test_result compile(std::string command, const std::string & boostpath,
+ const std::string & file)
+{
+ replace(command, "%source", boostpath + "/" + file);
+ return execute(command) ? compile_ok : compile_failed;
+}
+
+test_result link(std::string command, const std::string & boostpath,
+ const std::string & file)
+{
+ replace(command, "%source", boostpath + "/" + file);
+ return execute(command) ? link_ok : link_failed;
+}
+
+test_result run(std::string command, const std::string & boostpath,
+ const std::string & file, std::string args)
+{
+ std::string exename = "boosttmp.exe";
+ replace(command, "%source", boostpath + "/" + file);
+ if(execute(command)) {
+// cygwin seems to require leading ./ on some systems (JM)
+#if !defined(__CYGWIN__) && defined(_WIN32)
+ if(get_host() != "win32")
+#endif
+ exename = "./" + exename;
+ replace(args, "%boost", boostpath);
+ return execute(exename + " " + args) ? run_ok : run_failed;
+ } else {
+ return link_failed;
+ }
+}
+
+std::pair<test_result, test_result>
+run_test(const std::string & type, std::string compile_only_command,
+ std::string compile_link_command,
+ const std::string & boostpath, const std::string & source,
+ const std::string & args)
+{
+ replace(compile_only_command, "%include", boostpath);
+ replace(compile_link_command, "%include", boostpath);
+ if(type == "compile")
+ return std::make_pair(compile(compile_only_command, boostpath, source), compile_ok);
+ else if(type == "compile-fail")
+ return std::make_pair(compile(compile_only_command, boostpath, source), compile_failed);
+ else if(type == "link")
+ return std::make_pair(link(compile_link_command, boostpath, source), link_ok);
+ else if(type == "link-fail")
+ return std::make_pair(link(compile_link_command, boostpath, source), link_failed);
+ else if(type == "run")
+ return std::make_pair(run(compile_link_command, boostpath, source, args), run_ok);
+ else if(type == "run-fail")
+ return std::make_pair(run(compile_link_command, boostpath, source, args), run_failed);
+ else
+ return std::make_pair(unknown_type, ok);
+}
+
+template<class ForwardIterator>
+void do_tests(std::ostream & out,
+ ForwardIterator firstcompiler, ForwardIterator lastcompiler,
+ const std::string & testconfig, const std::string & boostpath,
+ const previous_results_type& previous_results,
+ bool highlight_diff)
+{
+ out << "<tr>\n"
+ << "<td>Program</td>\n"
+ << "<td>Test<br>Type</td>\n";
+ for(ForwardIterator it = firstcompiler; it != lastcompiler; ++it) {
+ out << "<td>" << it->html << "</td>\n";
+ }
+ out << "</tr>\n";
+
+ std::ifstream f(testconfig.c_str());
+ while(f.good()) {
+ std::string l;
+ getstringline(f, l);
+ if (!f.good()) break;
+ typedef std::string::size_type sz_type;
+ sz_type p = l.find(' ');
+ if(p == std::string::npos) {
+ std::cerr << "Test " << l << " is wrong\n";
+ continue;
+ }
+ std::string type(l, 0, p);
+ sz_type end_filename = l.find(' ', p+1);
+ std::string file, args;
+ if(end_filename == std::string::npos) {
+ file = l.substr(p+1, std::string::npos);
+ } else {
+ file = l.substr(p+1, end_filename-(p+1));
+ args = l.substr(end_filename+1, std::string::npos);
+ }
+
+ std::cout << "*** " << file << " ***\n\n";
+
+ out << "<tr>\n"
+ << "<td><a href=\"../" << file << "\">" << file << "</a></td>\n"
+ << "<td>" << type << "</td>\n";
+
+ previous_results_type::const_iterator prev_iter =
+ previous_results.find(file);
+ std::string previous = (prev_iter == previous_results.end() ?
+ std::string("") : prev_iter->second);
+ std::string::size_type i = 0;
+
+ for(ForwardIterator it = firstcompiler; it != lastcompiler; ++it, ++i) {
+ std::cout << "** " << it->name << "\n";
+ std::pair<test_result, test_result> result =
+ run_test(type, it->compile_only_command, it->compile_link_command, boostpath, file, args);
+ if(result.first == unknown_type) {
+ std::cerr << "Unknown test type " << type << ", skipped\n";
+ continue;
+ }
+ bool pass = result.first == result.second;
+ char prev = (i < previous.size() ? previous[i] : ' ');
+ bool changed = highlight_diff &&
+ ((prev == 'F' && pass) || (prev == 'P' && !pass) || prev == ' ');
+ out << "<td>"
+ << (changed ? "<font size=\"+3\"><em>" : "")
+ << (pass ? pass_string : fail_string)
+ << (changed ? "</em></font>" : "")
+ << "</td>" << std::endl;
+ std::cout << (result.first == result.second ? "Pass" : "Fail") << "\n\n";
+ }
+ out << "</tr>\n";
+ }
+}
+
+
+int main(int argc, char * argv[])
+{
+ configuration config = parse_command_line(argv+1, argv+argc);
+
+ std::list<entry> compilers;
+ read_compiler_configuration(config.compiler_config_file,
+ std::back_inserter(compilers));
+ std::string host = get_host();
+ for(std::list<entry>::iterator it = compilers.begin(); it != compilers.end(); ) {
+ if(it->os == host && (config.compiler == "*" ||
+ it->identifier == config.compiler)) {
+ replace_environment(it->compile_only_command);
+ replace_environment(it->compile_link_command);
+ ++it;
+ } else {
+ it = compilers.erase(it);
+ }
+ }
+
+ if(compilers.empty())
+ std::cerr << "You do not have any compatible compilers defined." << std::endl;
+
+ // if explicit test requested, write temporary file for do_tests
+ if(config.test != "") {
+ std::ofstream tmp((config.test_config_file="boosttmp.tmp").c_str());
+ tmp << config.test << std::endl;
+ }
+
+ previous_results_type previous_results;
+ if(config.highlight_differences) {
+ std::ifstream in(config.html_output.c_str());
+ previous_results = read_previous_results(in);
+ }
+
+ std::ofstream out( config.html_output.c_str() );
+
+ char run_date[100];
+ std::time_t ct;
+ std::time(&ct);
+ std::strftime(run_date, sizeof(run_date), "%d %b %Y %H:%M GMT", std::gmtime(&ct));
+
+ out << "<html>\n<head>\n<title>\nCompiler Status: " + host + "\n</title>\n</head>\n"
+ << "<body bgcolor=\"#ffffff\" text=\"#000000\">\n"
+ << "<h1><img border border=\"0\" src=\"../c++boost.gif\" width=\"277\" height=\"86\"></h1>\n"
+ << "<h1>Compiler Status: " + host + "</h1>\n"
+ << "\n"
+ << "<p><b>Run Date:</b> " << run_date << "</p>\n"
+ << "<p><b>System Configuration:</b> " << get_system_configuration()
+ << "</p>\n"
+ << "<p>\n"
+ << "<table border=\"1\" cellspacing=\"0\" cellpadding=\"5\">\n";
+
+ do_tests(out, compilers.begin(), compilers.end(), config.test_config_file, config.boostpath,
+ previous_results, config.highlight_differences);
+
+ out << "</table></p>\n<p>\n";
+ if(host == "linux")
+ out << "Notes: A hand-crafted &lt;limits&gt; Standard header has been\n"
+ << "applied to all configurations.\n"
+ << "The tests were run on a GNU libc 2.2.1 system which has improved\n"
+ << "wide character support compared to previous versions.";
+ else if(host == "irix" || host == "tru64")
+ out << "Note: For the 'clib' configuration, the missing new-style C\n"
+ << "library headers &lt;cXXX&gt; have been supplied.\n";
+
+ out << "</p>\n</body>\n</html>" << std::endl;
+ return 0;
+}
+
+