parameter conformance.</para>
</section>
- <section>
+ <section xml:id="any.examples">
<title>Examples</title>
<using-namespace name="boost"/>
</section>
<library-reference>
- <section id="any.ValueType">
- <title><emphasis>ValueType</emphasis> requirements</title>
+ <section xml:id="any.ValueType">
+ <title><bold>ValueType</bold> requirements</title>
<para>Values are strongly informational objects for which
identity is not significant, i.e. the focus is principally on
</header>
</library-reference>
- <section>
+ <section xml:id="any.acknowledgments">
<title>Acknowledgements</title>
<para>Doug Gregor ported the documentation to the BoostBook format.</para>
--- /dev/null
+<?xml version="1.0"?>
+<book xmlns:xi="http://www.w3.org/2001/XInclude">
+
+
+ <preface xml:id="about"><info><title>What's Included in This Document</title></info>
+
+
+ <para>This document represents only a subset of the full Boost
+ documentation: that part which is generated from BoostBook or
+ QuickBook sources. Eventually all Boost libraries may use these
+ formats, but in the meantime, much of Boost's documentation is not
+ available here. Please
+ see <link xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://docbook.org/ns/docbook" xlink:href="http://www.boost.org/libs" href="">http://www.boost.org/libs</link>
+ for complete documentation.
+ </para>
+
+ <para>
+ Documentation for some of the libraries described in this document is
+ available in alternative formats:
+ <itemizedlist>
+ <listitem>
+ <simpara><link xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://docbook.org/ns/docbook" xlink:href="http://www.boost.org/doc/boost-doc-html.tar.gz" href="">HTML (tarred, gzipped)</link></simpara>
+ </listitem>
+ <listitem>
+ <simpara><link xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://docbook.org/ns/docbook" xlink:href="http://www.boost.org/doc/boost.pdf" href="">PDF</link></simpara>
+ </listitem>
+ <listitem>
+ <simpara>
+ <link xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://docbook.org/ns/docbook" xlink:href="http://www.boost.org/doc/boost-doc-man.tar.gz" href="">Unix man pages</link>
+ </simpara>
+ </listitem>
+ <listitem>
+ <simpara><link xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://docbook.org/ns/docbook" xlink:href="../boost.docbook" href="">DocBook</link></simpara>
+ </listitem>
+ <listitem>
+ <simpara>
+ <link xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://docbook.org/ns/docbook" xlink:href="../boost.fo" href="">XSL Formatting Objects</link>
+ </simpara>
+ </listitem>
+ </itemizedlist>
+ </para>
+
+ </preface>
+
+ <part xml:id="libraries"><info><title>The Boost C++ Libraries (BoostBook Subset)</title></info>
+
+
+ <chapter xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" id="id18968-bb" rev:last-revision="$Date: 2009-07-22 23:35:08 +0100 (Wed, 22 Jul 2009) $">
+ <chapterinfo><author>
+ <personname>Kevlin Henney</personname>
+ </author><copyright>
+ <year>2001</year>
+ <holder>Kevlin Henney</holder>
+ </copyright><legalnotice>
+ <para>Distributed under the Boost Software License, Version 1.0.
+ (See accompanying file <filename>LICENSE_1_0.txt</filename> or copy at
+ <link xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.boost.org/LICENSE_1_0.txt" href="">http://www.boost.org/LICENSE_1_0.txt</link>)
+ </para>
+ </legalnotice></chapterinfo>
+
+ <title>Boost.Any</title>
+
+ <section xml:id="any.introduction">
+ <title>Introduction</title>
+
+ <para>There are times when a generic (in the sense of
+ <emphasis>general</emphasis> as opposed to
+ <emphasis>template-based programming</emphasis>) type is needed:
+ variables that are truly variable, accommodating values of many
+ other more specific types rather than C++'s normal strict and
+ static types. We can distinguish three basic kinds of generic
+ type:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>Converting types that can hold one of a number of
+ possible value types, e.g. <computeroutput>int</computeroutput> and
+ <computeroutput>string</computeroutput>, and freely convert between them, for
+ instance interpreting <computeroutput>5</computeroutput> as <computeroutput>"5"</computeroutput> or
+ vice-versa. Such types are common in scripting and other
+ interpreted
+ languages.
+ <computeroutput>boost::lexical_cast</computeroutput>
+ supports such conversion functionality.</para>
+ </listitem>
+ <listitem>
+ <para>
+ Discriminated types that contain values of different types but
+ do not attempt conversion between them, i.e. <computeroutput>5</computeroutput> is
+ held strictly as an <computeroutput>int</computeroutput> and is not implicitly
+ convertible either to <computeroutput>"5"</computeroutput> or to
+ <computeroutput>5.0</computeroutput>. Their indifference to interpretation but
+ awareness of type effectively makes them safe, generic
+ containers of single values, with no scope for surprises from
+ ambiguous conversions.</para>
+ </listitem>
+ <listitem>
+ <para>
+ Indiscriminate types that can refer to anything but are
+ oblivious to the actual underlying type, entrusting all forms
+ of access and interpretation to the programmer. This niche is
+ dominated by <computeroutput>void *</computeroutput>, which offers plenty of scope
+ for surprising, undefined behavior.</para>
+ </listitem>
+ </itemizedlist>
+
+ <para>The <computeroutput><link linkend="boost.any">boost::any</link></computeroutput> class
+ (based on the class of the same name described in <link xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.two-sdg.demon.co.uk/curbralan/papers/ValuedConversions.pdf" href="">"Valued
+ Conversions"</link> by Kevlin Henney, <emphasis>C++
+ Report</emphasis> 12(7), July/August 2000) is a variant value type
+ based on the second category. It supports copying of any value
+ type and safe checked extraction of that value strictly against
+ its type. A similar design, offering more appropriate operators,
+ can be used for a generalized function adaptor,
+ <computeroutput>any_function</computeroutput>, a generalized iterator adaptor,
+ <computeroutput>any_iterator</computeroutput>, and other object types that need
+ uniform runtime treatment but support only compile-time template
+ parameter conformance.</para>
+ </section>
+
+ <section xml:id="any.examples">
+ <title>Examples</title>
+
+
+
+
+ <para>The following code demonstrates the syntax for using
+ implicit conversions to and copying of any objects:</para>
+
+<programlisting>
+#include <list>
+#include <boost/any.hpp>
+
+using <computeroutput><link linkend="boost.any_cast">boost::any_cast</link></computeroutput>;
+typedef std::list<<computeroutput><link linkend="boost.any">boost::any</link></computeroutput>> many;
+
+void append_int(many & values, int value)
+{
+ <computeroutput><link linkend="boost.any">boost::any</link></computeroutput> to_append = value;
+ values.push_back(to_append);
+}
+
+void append_string(many & values, const std::string & value)
+{
+ values.push_back(value);
+}
+
+void append_char_ptr(many & values, const char * value)
+{
+ values.push_back(value);
+}
+
+void append_any(many & values, const <computeroutput><link linkend="boost.any">boost::any</link></computeroutput> & value)
+{
+ values.push_back(value);
+}
+
+void append_nothing(many & values)
+{
+ values.push_back(<computeroutput><link linkend="boost.any">boost::any</link></computeroutput>());
+}
+</programlisting>
+
+ <para>The following predicates follow on from the previous
+ definitions and demonstrate the use of queries on any
+ objects:</para>
+
+<programlisting>
+bool is_empty(const <computeroutput><link linkend="boost.any">boost::any</link></computeroutput> & operand)
+{
+ return operand.<computeroutput><link linkend="id61996-bb">empty</link></computeroutput>();
+}
+
+bool is_int(const <computeroutput><link linkend="boost.any">boost::any</link></computeroutput> & operand)
+{
+ return operand.<computeroutput><link linkend="id62025-bb">type</link></computeroutput>() == typeid(int);
+}
+
+bool is_char_ptr(const <computeroutput><link linkend="boost.any">boost::any</link></computeroutput> & operand)
+{
+ try
+ {
+ <computeroutput><link linkend="boost.any_cast">any_cast</link></computeroutput><const char *>(operand);
+ return true;
+ }
+ catch(const <computeroutput><link linkend="boost.bad_any_cast">boost::bad_any_cast</link></computeroutput> &)
+ {
+ return false;
+ }
+}
+
+bool is_string(const <computeroutput><link linkend="boost.any">boost::any</link></computeroutput> & operand)
+{
+ return <computeroutput><link linkend="boost.any_cast">any_cast</link></computeroutput><std::string>(&operand);
+}
+
+void count_all(many & values, std::ostream & out)
+{
+ out << "#empty == "
+ << std::count_if(values.begin(), values.end(), is_empty) << std::endl;
+ out << "#int == "
+ << std::count_if(values.begin(), values.end(), is_int) << std::endl;
+ out << "#const char * == "
+ << std::count_if(values.begin(), values.end(), is_char_ptr) << std::endl;
+ out << "#string == "
+ << std::count_if(values.begin(), values.end(), is_string) << std::endl;
+}
+</programlisting>
+
+ <para>The following type, patterned after the OMG's Property Service, defines name-value pairs for arbitrary value types:</para>
+
+<programlisting>
+struct property
+{
+ property();
+ property(const std::string &, const <computeroutput><link linkend="boost.any">boost::any</link></computeroutput> &);
+
+ std::string name;
+ <computeroutput><link linkend="boost.any">boost::any</link></computeroutput> value;
+};
+
+typedef std::list<property> properties;
+</programlisting>
+
+ <para>The following base class demonstrates one approach to
+ runtime polymorphism based callbacks that also require arbitrary
+ argument types. The absence of virtual member templates requires
+ that different solutions have different trade-offs in terms of
+ efficiency, safety, and generality. Using a checked variant type
+ offers one approach:</para>
+
+<programlisting>
+class consumer
+{
+public:
+ virtual void notify(const <computeroutput><link linkend="boost.any">any</link></computeroutput> &) = 0;
+ ...
+};
+</programlisting>
+ </section>
+
+ <section id="any.reference"><title>Reference</title>
+ <section xml:id="any.ValueType">
+ <title><emphasis role="bold">ValueType</emphasis> requirements</title>
+
+ <para>Values are strongly informational objects for which
+ identity is not significant, i.e. the focus is principally on
+ their state content and any behavior organized around
+ that. Another distinguishing feature of values is their
+ granularity: normally fine-grained objects representing simple
+ concepts in the system such as quantities.</para>
+
+ <para>As the emphasis of a value lies in its state not its
+ identity, values can be copied and typically assigned one to
+ another, requiring the explicit or implicit definition of a
+ public copy constructor and public assignment operator. Values
+ typically live within other scopes, i.e. within objects or
+ blocks, rather than on the heap. Values are therefore normally
+ passed around and manipulated directly as variables or through
+ references, but not as pointers that emphasize identity and
+ indirection.</para>
+
+ <para>The specific requirements on value types to be used in an
+ <computeroutput><link linkend="boost.any">any</link></computeroutput>
+ are:</para>
+
+ <itemizedlist spacing="compact">
+ <listitem><simpara>A <emphasis>ValueType</emphasis> is
+ <emphasis>CopyConstructible</emphasis> [20.1.3].</simpara>
+ </listitem>
+
+ <listitem><simpara>A <emphasis>ValueType</emphasis> is
+ optionally <emphasis>Assignable</emphasis> [23.1]. The strong
+ exception-safety guarantee is required for all forms of
+ assignment.</simpara>
+ </listitem>
+
+ <listitem><simpara>The destructor for a
+ <emphasis>ValueType</emphasis> upholds the no-throw
+ exception-safety guarantee.</simpara>
+ </listitem>
+ </itemizedlist>
+ </section>
+
+ <section id="header.boost.any_hpp"><title>Header <<ulink url="../../boost/any.hpp">boost/any.hpp</ulink>></title><synopsis><phrase role="keyword">namespace</phrase> <phrase role="identifier">boost</phrase> <phrase role="special">{</phrase>
+ <phrase role="keyword">class</phrase> <link linkend="boost.bad_any_cast">bad_any_cast</link><phrase role="special">;</phrase>
+ <phrase role="keyword">class</phrase> <link linkend="boost.any">any</link><phrase role="special">;</phrase>
+ <phrase role="keyword">template</phrase><phrase role="special"><</phrase><phrase role="special">></phrase> <phrase role="identifier">T</phrase> <link linkend="boost.any_cast"><phrase role="identifier">any_cast</phrase></link><phrase role="special">(</phrase><link linkend="boost.any">any</link> <phrase role="special">&</phrase><phrase role="special">)</phrase><phrase role="special">;</phrase>
+ <phrase role="keyword">template</phrase><phrase role="special"><</phrase><phrase role="special">></phrase> <phrase role="identifier">T</phrase> <link linkend="boost.any_cast"><phrase role="identifier">any_cast</phrase></link><phrase role="special">(</phrase><phrase role="keyword">const</phrase> <link linkend="boost.any">any</link> <phrase role="special">&</phrase><phrase role="special">)</phrase><phrase role="special">;</phrase>
+ <phrase role="keyword">template</phrase><phrase role="special"><</phrase><phrase role="special">></phrase> <phrase role="keyword">const</phrase> <phrase role="identifier">ValueType</phrase> <phrase role="special">*</phrase> <link linkend="boost.any_cast"><phrase role="identifier">any_cast</phrase></link><phrase role="special">(</phrase><phrase role="keyword">const</phrase> <link linkend="boost.any">any</link> <phrase role="special">*</phrase><phrase role="special">)</phrase><phrase role="special">;</phrase>
+ <phrase role="keyword">template</phrase><phrase role="special"><</phrase><phrase role="special">></phrase> <phrase role="identifier">ValueType</phrase> <phrase role="special">*</phrase> <link linkend="boost.any_cast"><phrase role="identifier">any_cast</phrase></link><phrase role="special">(</phrase><link linkend="boost.any">any</link> <phrase role="special">*</phrase><phrase role="special">)</phrase><phrase role="special">;</phrase>
+<phrase role="special">}</phrase></synopsis>
+ <refentry id="boost.bad_any_cast"><refmeta><refentrytitle>Class bad_any_cast</refentrytitle><manvolnum>3</manvolnum></refmeta><refnamediv><refname>boost::bad_any_cast</refname><refpurpose>The exception thrown in the event of a failed
+ <computeroutput><link linkend="boost.any_cast">any_cast</link></computeroutput> of an
+ <computeroutput><link linkend="boost.any">any</link></computeroutput> value.</refpurpose></refnamediv><refsynopsisdiv><synopsis><phrase role="comment">// In header: <<link linkend="header.boost.any_hpp">boost/any.hpp</link>>
+
+</phrase>
+<phrase role="keyword">class</phrase> <link linkend="boost.bad_any_cast">bad_any_cast</link> <phrase role="special">:</phrase> <phrase role="keyword">public</phrase> std::bad_cast <phrase role="special">{</phrase>
+<phrase role="keyword">public</phrase><phrase role="special">:</phrase>
+ <phrase role="keyword">virtual</phrase> <phrase role="keyword">const</phrase> <phrase role="keyword">char</phrase> <phrase role="special">*</phrase> <link linkend="id61674-bb"><phrase role="identifier">what</phrase></link><phrase role="special">(</phrase><phrase role="special">)</phrase> <phrase role="keyword">const</phrase><phrase role="special">;</phrase>
+<phrase role="special">}</phrase><phrase role="special">;</phrase></synopsis></refsynopsisdiv><refsect1><title>Description</title><para><literallayout class="monospaced"><phrase role="keyword">virtual</phrase> <phrase role="keyword">const</phrase> <phrase role="keyword">char</phrase> <phrase role="special">*</phrase> <anchor id="id61674-bb"/><phrase role="identifier">what</phrase><phrase role="special">(</phrase><phrase role="special">)</phrase> <phrase role="keyword">const</phrase><phrase role="special">;</phrase></literallayout></para></refsect1></refentry><refentry id="boost.any"><refmeta><refentrytitle>Class any</refentrytitle><manvolnum>3</manvolnum></refmeta><refnamediv><refname>boost::any</refname><refpurpose>A class whose instances can hold instances of any
+ type that satisfies <link linkend="any.ValueType">ValueType</link>
+ requirements.</refpurpose></refnamediv><refsynopsisdiv><synopsis><phrase role="comment">// In header: <<link linkend="header.boost.any_hpp">boost/any.hpp</link>>
+
+</phrase>
+<phrase role="keyword">class</phrase> <link linkend="boost.any">any</link> <phrase role="special">{</phrase>
+<phrase role="keyword">public</phrase><phrase role="special">:</phrase>
+ <phrase role="comment">// <link linkend="boost.anyconstruct-copy-destruct">construct/copy/destruct</link></phrase>
+ <link linkend="id61705-bb"><phrase role="identifier">any</phrase></link><phrase role="special">(</phrase><phrase role="special">)</phrase><phrase role="special">;</phrase>
+ <link linkend="id61718-bb"><phrase role="identifier">any</phrase></link><phrase role="special">(</phrase><phrase role="keyword">const</phrase> <link linkend="boost.any">any</link> <phrase role="special">&</phrase><phrase role="special">)</phrase><phrase role="special">;</phrase>
+ <phrase role="keyword">template</phrase><phrase role="special"><</phrase><phrase role="special">></phrase> <link linkend="id61766-bb"><phrase role="identifier">any</phrase></link><phrase role="special">(</phrase><phrase role="keyword">const</phrase> <phrase role="identifier">ValueType</phrase> <phrase role="special">&</phrase><phrase role="special">)</phrase><phrase role="special">;</phrase>
+ <link linkend="boost.any">any</link> <phrase role="special">&</phrase> <link linkend="id61826-bb"><phrase role="keyword">operator</phrase><phrase role="special">=</phrase></link><phrase role="special">(</phrase><phrase role="keyword">const</phrase> <link linkend="boost.any">any</link> <phrase role="special">&</phrase><phrase role="special">)</phrase><phrase role="special">;</phrase>
+ <phrase role="keyword">template</phrase><phrase role="special"><</phrase><phrase role="special">></phrase> <link linkend="boost.any">any</link> <phrase role="special">&</phrase> <link linkend="id61883-bb"><phrase role="keyword">operator</phrase><phrase role="special">=</phrase></link><phrase role="special">(</phrase><phrase role="keyword">const</phrase> <phrase role="identifier">ValueType</phrase> <phrase role="special">&</phrase><phrase role="special">)</phrase><phrase role="special">;</phrase>
+ <link linkend="id61812-bb"><phrase role="special">~</phrase><phrase role="identifier">any</phrase></link><phrase role="special">(</phrase><phrase role="special">)</phrase><phrase role="special">;</phrase>
+
+ <phrase role="comment">// <link linkend="id61937-bb">modifiers</link></phrase>
+ <link linkend="boost.any">any</link> <phrase role="special">&</phrase> <link linkend="id61941-bb"><phrase role="identifier">swap</phrase></link><phrase role="special">(</phrase><link linkend="boost.any">any</link> <phrase role="special">&</phrase><phrase role="special">)</phrase><phrase role="special">;</phrase>
+
+ <phrase role="comment">// <link linkend="id61992-bb">queries</link></phrase>
+ <phrase role="keyword">bool</phrase> <link linkend="id61996-bb"><phrase role="identifier">empty</phrase></link><phrase role="special">(</phrase><phrase role="special">)</phrase> <phrase role="keyword">const</phrase><phrase role="special">;</phrase>
+ <phrase role="keyword">const</phrase> std::type_info <phrase role="special">&</phrase> <link linkend="id62025-bb"><phrase role="identifier">type</phrase></link><phrase role="special">(</phrase><phrase role="special">)</phrase> <phrase role="keyword">const</phrase><phrase role="special">;</phrase>
+<phrase role="special">}</phrase><phrase role="special">;</phrase></synopsis></refsynopsisdiv><refsect1><title>Description</title><refsect2><title><anchor id="boost.anyconstruct-copy-destruct"/><computeroutput>any</computeroutput>
+ public
+ construct/copy/destruct</title><orderedlist><listitem><para><literallayout class="monospaced"><anchor id="id61705-bb"/><phrase role="identifier">any</phrase><phrase role="special">(</phrase><phrase role="special">)</phrase><phrase role="special">;</phrase></literallayout></para><variablelist spacing="compact"><?dbhtml
+ list-presentation="table"
+ ?><varlistentry><term>Postconditions:</term><listitem><simpara><computeroutput>this-><link linkend="id61996-bb">empty</link>()</computeroutput></simpara></listitem></varlistentry></variablelist></listitem><listitem><para><literallayout class="monospaced"><anchor id="id61718-bb"/><phrase role="identifier">any</phrase><phrase role="special">(</phrase><phrase role="keyword">const</phrase> <link linkend="boost.any">any</link> <phrase role="special">&</phrase> other<phrase role="special">)</phrase><phrase role="special">;</phrase></literallayout></para><variablelist spacing="compact"><?dbhtml
+ list-presentation="table"
+ ?><varlistentry><term>Effects:</term><listitem><simpara> Copy constructor that copies content of
+ <computeroutput>other</computeroutput> into new instance, so that any content
+ is equivalent in both type and value to the content of
+ <computeroutput>other</computeroutput>, or empty if <computeroutput>other</computeroutput> is
+ empty. </simpara></listitem></varlistentry><varlistentry><term>Throws:</term><listitem><simpara>May fail with a
+ <computeroutput>std::bad_alloc</computeroutput>
+ exception or any exceptions arising from the copy
+ constructor of the contained type.</simpara></listitem></varlistentry></variablelist></listitem><listitem><para><literallayout class="monospaced"><phrase role="keyword">template</phrase><phrase role="special"><</phrase><phrase role="special">></phrase> <anchor id="id61766-bb"/><phrase role="identifier">any</phrase><phrase role="special">(</phrase><phrase role="keyword">const</phrase> <phrase role="identifier">ValueType</phrase> <phrase role="special">&</phrase> value<phrase role="special">)</phrase><phrase role="special">;</phrase></literallayout></para><variablelist spacing="compact"><?dbhtml
+ list-presentation="table"
+ ?><varlistentry><term>Effects:</term><listitem><simpara>Makes a copy of <computeroutput>value</computeroutput>, so
+ that the initial content of the new instance is equivalent
+ in both type and value to
+ <computeroutput>value</computeroutput>.</simpara></listitem></varlistentry><varlistentry><term>Throws:</term><listitem><simpara><computeroutput>std::bad_alloc</computeroutput>
+ or any exceptions arising from the copy constructor of the
+ contained type.</simpara></listitem></varlistentry></variablelist></listitem><listitem><para><literallayout class="monospaced"><link linkend="boost.any">any</link> <phrase role="special">&</phrase> <anchor id="id61826-bb"/><phrase role="keyword">operator</phrase><phrase role="special">=</phrase><phrase role="special">(</phrase><phrase role="keyword">const</phrase> <link linkend="boost.any">any</link> <phrase role="special">&</phrase> rhs<phrase role="special">)</phrase><phrase role="special">;</phrase></literallayout></para><variablelist spacing="compact"><?dbhtml
+ list-presentation="table"
+ ?><varlistentry><term>Effects:</term><listitem><simpara>Copies content of <computeroutput>rhs</computeroutput> into
+ current instance, discarding previous content, so that the
+ new content is equivalent in both type and value to the
+ content of <computeroutput>rhs</computeroutput>, or empty if
+ <computeroutput>rhs.<link linkend="id61996-bb">empty</link>()</computeroutput>.</simpara></listitem></varlistentry><varlistentry><term>Throws:</term><listitem><simpara><computeroutput>std::bad_alloc</computeroutput>
+ or any exceptions arising from the copy constructor of the
+ contained type. Assignment satisfies the strong guarantee
+ of exception safety.</simpara></listitem></varlistentry></variablelist></listitem><listitem><para><literallayout class="monospaced"><phrase role="keyword">template</phrase><phrase role="special"><</phrase><phrase role="special">></phrase> <link linkend="boost.any">any</link> <phrase role="special">&</phrase> <anchor id="id61883-bb"/><phrase role="keyword">operator</phrase><phrase role="special">=</phrase><phrase role="special">(</phrase><phrase role="keyword">const</phrase> <phrase role="identifier">ValueType</phrase> <phrase role="special">&</phrase> rhs<phrase role="special">)</phrase><phrase role="special">;</phrase></literallayout></para><variablelist spacing="compact"><?dbhtml
+ list-presentation="table"
+ ?><varlistentry><term>Effects:</term><listitem><simpara>Makes a copy of <computeroutput>rhs</computeroutput>,
+ discarding previous content, so that the new content of is
+ equivalent in both type and value to
+ <computeroutput>rhs</computeroutput>.</simpara></listitem></varlistentry><varlistentry><term>Throws:</term><listitem><simpara><computeroutput>std::bad_alloc</computeroutput>
+ or any exceptions arising from the copy constructor of the
+ contained type. Assignment satisfies the strong guarantee
+ of exception safety.</simpara></listitem></varlistentry></variablelist></listitem><listitem><para><literallayout class="monospaced"><anchor id="id61812-bb"/><phrase role="special">~</phrase><phrase role="identifier">any</phrase><phrase role="special">(</phrase><phrase role="special">)</phrase><phrase role="special">;</phrase></literallayout></para><variablelist spacing="compact"><?dbhtml
+ list-presentation="table"
+ ?><varlistentry><term>Effects:</term><listitem><simpara>Releases any and all resources used in
+ management of instance.</simpara></listitem></varlistentry><varlistentry><term>Throws:</term><listitem><simpara>Nothing.</simpara></listitem></varlistentry></variablelist></listitem></orderedlist></refsect2><refsect2><title><anchor id="id61937-bb"/><computeroutput>any</computeroutput> modifiers</title><orderedlist><para><literallayout class="monospaced"><link linkend="boost.any">any</link> <phrase role="special">&</phrase> <anchor id="id61941-bb"/><phrase role="identifier">swap</phrase><phrase role="special">(</phrase><link linkend="boost.any">any</link> <phrase role="special">&</phrase> rhs<phrase role="special">)</phrase><phrase role="special">;</phrase></literallayout></para><variablelist spacing="compact"><?dbhtml
+ list-presentation="table"
+ ?><varlistentry><term>Effects:</term><listitem><simpara>Exchange of the contents of
+ <computeroutput>*this</computeroutput> and
+ <computeroutput>rhs</computeroutput>.</simpara></listitem></varlistentry><varlistentry><term>Returns:</term><listitem><simpara><computeroutput>*this</computeroutput></simpara></listitem></varlistentry><varlistentry><term>Throws:</term><listitem><simpara>Nothing.</simpara></listitem></varlistentry></variablelist></orderedlist></refsect2><refsect2><title><anchor id="id61992-bb"/><computeroutput>any</computeroutput> queries</title><orderedlist><para><literallayout class="monospaced"><phrase role="keyword">bool</phrase> <anchor id="id61996-bb"/><phrase role="identifier">empty</phrase><phrase role="special">(</phrase><phrase role="special">)</phrase> <phrase role="keyword">const</phrase><phrase role="special">;</phrase></literallayout></para><variablelist spacing="compact"><?dbhtml
+ list-presentation="table"
+ ?><varlistentry><term>Returns:</term><listitem><simpara><computeroutput>true</computeroutput> if instance is
+ empty, otherwise <computeroutput>false</computeroutput>.</simpara></listitem></varlistentry><varlistentry><term>Throws:</term><listitem><simpara>Will not throw.</simpara></listitem></varlistentry></variablelist><para><literallayout class="monospaced"><phrase role="keyword">const</phrase> std::type_info <phrase role="special">&</phrase> <anchor id="id62025-bb"/><phrase role="identifier">type</phrase><phrase role="special">(</phrase><phrase role="special">)</phrase> <phrase role="keyword">const</phrase><phrase role="special">;</phrase></literallayout></para><variablelist spacing="compact"><?dbhtml
+ list-presentation="table"
+ ?><varlistentry><term>Returns:</term><listitem><simpara>the <computeroutput>typeid</computeroutput> of the
+ contained value if instance is non-empty, otherwise
+ <computeroutput>typeid(void)</computeroutput>.</simpara></listitem></varlistentry><varlistentry><term>Notes:</term><listitem><simpara>Useful for querying against types known
+ either at compile time or only at
+ runtime.</simpara></listitem></varlistentry></variablelist></orderedlist></refsect2></refsect1></refentry><refentry id="boost.any_cast"><refmeta><refentrytitle>Function any_cast</refentrytitle><manvolnum>3</manvolnum></refmeta><refnamediv><refname>boost::any_cast</refname><refpurpose>Custom keyword cast for extracting a value
+ of a given type from an
+ <computeroutput><link linkend="boost.any">any</link></computeroutput>.</refpurpose></refnamediv><refsynopsisdiv><synopsis><phrase role="comment">// In header: <<link linkend="header.boost.any_hpp">boost/any.hpp</link>>
+
+</phrase>
+<phrase role="keyword">template</phrase><phrase role="special"><</phrase><phrase role="special">></phrase> <phrase role="identifier">T</phrase> <phrase role="identifier">any_cast</phrase><phrase role="special">(</phrase><link linkend="boost.any">any</link> <phrase role="special">&</phrase> operand<phrase role="special">)</phrase><phrase role="special">;</phrase>
+<phrase role="keyword">template</phrase><phrase role="special"><</phrase><phrase role="special">></phrase> <phrase role="identifier">T</phrase> <phrase role="identifier">any_cast</phrase><phrase role="special">(</phrase><phrase role="keyword">const</phrase> <link linkend="boost.any">any</link> <phrase role="special">&</phrase> operand<phrase role="special">)</phrase><phrase role="special">;</phrase>
+<phrase role="keyword">template</phrase><phrase role="special"><</phrase><phrase role="special">></phrase> <phrase role="keyword">const</phrase> <phrase role="identifier">ValueType</phrase> <phrase role="special">*</phrase> <phrase role="identifier">any_cast</phrase><phrase role="special">(</phrase><phrase role="keyword">const</phrase> <link linkend="boost.any">any</link> <phrase role="special">*</phrase> operand<phrase role="special">)</phrase><phrase role="special">;</phrase>
+<phrase role="keyword">template</phrase><phrase role="special"><</phrase><phrase role="special">></phrase> <phrase role="identifier">ValueType</phrase> <phrase role="special">*</phrase> <phrase role="identifier">any_cast</phrase><phrase role="special">(</phrase><link linkend="boost.any">any</link> <phrase role="special">*</phrase> operand<phrase role="special">)</phrase><phrase role="special">;</phrase></synopsis></refsynopsisdiv><refsect1><title>Description</title><variablelist spacing="compact"><?dbhtml
+ list-presentation="table"
+ ?><varlistentry><term>Returns:</term><listitem><simpara> If passed a pointer, it returns a
+ similarly qualified pointer to the value content if
+ successful, otherwise null is returned.
+ If T is ValueType, it returns a copy of the held value, otherwise, if T is a reference
+ to (possibly const qualified) ValueType, it returns a reference to the held
+ value.</simpara></listitem></varlistentry><varlistentry><term>Throws:</term><listitem><simpara>Overloads taking an
+ <computeroutput><link linkend="boost.any">any</link></computeroutput> pointer do not
+ throw; overloads taking an
+ <computeroutput><link linkend="boost.any">any</link></computeroutput> value or reference
+ throws <computeroutput><link linkend="boost.bad_any_cast">bad_any_cast</link></computeroutput> if
+ unsuccessful.</simpara></listitem></varlistentry></variablelist></refsect1></refentry>
+ </section>
+ </section>
+
+ <section xml:id="any.acknowledgments">
+ <title>Acknowledgements</title>
+
+ <para>Doug Gregor ported the documentation to the BoostBook format.</para>
+ </section>
+</chapter>
+
+ </part>
+
+ <part xml:id="tools"><info><title>Boost Tools</title></info>
+
+ <partintro>
+ <para>
+ Boost developers, testers, and maintainers have developed various programs to
+ help with the administration of the Boost Libraries. Like everything else about
+ Boost, these tools are available in source form, and are part of the regular
+ Boost distribution.
+ </para>
+ <para>
+ Users may find these tools useful when porting Boost libraries to a new platform,
+ or for use with their own applications.
+ </para>
+ </partintro>
+
+ </part>
+</book>
--- /dev/null
+<!-- Converted by db4-upgrade version 1.0 -->
+
+<api xmlns="http://docbook.org/ns/docbook"
+xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0" last-revision="$Date: 2010-03-05 04:59:16 +0000 (Fri, 05 Mar 2010) $">
+
+
+ <preface xml:id="about"><info><title>What's Included in This Document</title></info>
+
+
+ <para>This document represents only a subset of the full Boost
+ documentation: that part which is generated from BoostBook or
+ QuickBook sources. Eventually all Boost libraries may use these
+ formats, but in the meantime, much of Boost's documentation is not
+ available here. Please
+ see <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.boost.org/libs">http://www.boost.org/libs</link>
+ for complete documentation.
+ </para>
+
+ <para>
+ Documentation for some of the libraries described in this document is
+ available in alternative formats:
+ <itemizedlist>
+ <listitem>
+ <simpara><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.boost.org/doc/boost-doc-html.tar.gz">HTML (tarred, gzipped)</link></simpara>
+ </listitem>
+ <listitem>
+ <simpara><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.boost.org/doc/boost.pdf">PDF</link></simpara>
+ </listitem>
+ <listitem>
+ <simpara>
+ <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.boost.org/doc/boost-doc-man.tar.gz">Unix man pages</link>
+ </simpara>
+ </listitem>
+ <listitem>
+ <simpara><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../boost.docbook">DocBook</link></simpara>
+ </listitem>
+ <listitem>
+ <simpara>
+ <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../boost.fo">XSL Formatting Objects</link>
+ </simpara>
+ </listitem>
+ </itemizedlist>
+ </para>
+
+ </preface>
+
+ <part xml:id="libraries"><info><title>The Boost C++ Libraries (BoostBook Subset)</title></info>
+
+
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="any.xml"/>
+<!-- <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="array.xml"/>
+ <library name="Asio" dirname="asio" html-only="1">
+ <libraryinfo>
+ <author><personname><firstname>Christopher</firstname><surname>Kohlhoff</surname></personname></author>
+
+ <librarypurpose>Portable networking and other low-level I/O, including sockets, timers, hostname resolution, socket iostreams, serial ports, file descriptors and Windows HANDLEs</librarypurpose>
+ <librarycategory name="category:io"/>
+ </libraryinfo>
+ </library>
+
+ <library name="Bind" dirname="bind" html-only="1">
+ <libraryinfo>
+ <author><personname><firstname>Peter</firstname><surname>Dimov</surname></personname></author>
+ <librarypurpose>Generalized binders for function/object/pointers and member functions</librarypurpose>
+ <librarycategory name="category:higher-order"/>
+ </libraryinfo>
+ </library>
+
+ <library name="Mem_fn" dirname="bind" html-only="1" url="../../libs/bind/mem_fn.html">
+ <libraryinfo>
+ <author><personname><firstname>Peter</firstname><surname>Dimov</surname></personname></author>
+ <librarypurpose>Generalized binders for member functions</librarypurpose>
+ <librarycategory name="category:higher-order"/>
+ </libraryinfo>
+ </library>
+
+ <library name="Call Traits" dirname="call_traits" html-only="1" url="../../libs/utility/call_traits.htm">
+ <libraryinfo>
+ <author><personname><firstname>John</firstname><surname>Maddock</surname></personname></author>
+ <author><personname><firstname>Howard</firstname><surname>Hinnant</surname></personname></author>
+ <librarypurpose>Defines types for passing parameters</librarypurpose>
+ <librarycategory name="category:generic"/>
+ </libraryinfo>
+ </library>
+
+ <library name="Circular Buffer" dirname="circular_buffer" html-only="1" url="../../libs/circular_buffer/index.html">
+ <libraryinfo>
+ <author><personname><firstname>Jan</firstname><surname>Gaspar</surname></personname></author>
+ <librarypurpose>A STL compliant container also known as ring or cyclic buffer</librarypurpose>
+ <librarycategory name="category:containers"/>
+ </libraryinfo>
+ </library>
+ <library name="Compatibility" dirname="compatibility" html-only="1">
+ <libraryinfo>
+ <author><personname><firstname>Ralf</firstname><surname>Grosse-Kunstleve</surname></personname></author>
+ <author><personname><firstname>Jens</firstname><surname>Maurer</surname></personname></author>
+ <librarypurpose>Help for non-conforming standard libraries</librarypurpose>
+ <librarycategory name="category:broken"/>
+ </libraryinfo>
+ </library>
+
+ <library name="Compose" dirname="compose" html-only="1" url="../../libs/compose/index.htm">
+ <libraryinfo>
+ <author><personname><firstname>Nicolai</firstname><surname>Josuttis</surname></personname></author>
+
+ <librarypurpose>Functional composition adapters for the STL</librarypurpose>
+ <librarycategory name="category:higher-order"/>
+ </libraryinfo>
+ </library>
+
+ <library name="Compressed Pair" dirname="compressed_pair" html-only="1" url="../../libs/utility/compressed_pair.htm">
+ <libraryinfo>
+ <author><personname><firstname>John</firstname><surname>Maddock</surname></personname></author>
+ <author><personname><firstname>Howard</firstname><surname>Hinnant</surname></personname></author>
+ <librarypurpose>Empty member optimization</librarypurpose>
+ <librarycategory name="category:data-structures"/>
+ <librarycategory name="category:misc"/>
+ </libraryinfo>
+ </library>
+
+ <library name="Concept Check" dirname="concept_check">
+ <libraryinfo>
+ <author><personname><firstname>Jeremy</firstname><surname>Siek</surname></personname></author>
+ <librarypurpose>Tools for generic programming</librarypurpose>
+ <librarycategory name="category:generic"/>
+ <librarycategory name="category:testing"/>
+ </libraryinfo>
+ <title>Boost.Concept_Check</title>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="concepts.xml"/>
+ </library>
+
+ <library name="Config" dirname="config" html-only="1">
+ <libraryinfo>
+ <author><personname><firstname>John</firstname><surname>Maddock</surname></personname></author>
+ <author><personname><firstname>Beman</firstname><surname>Dawes</surname></personname></author>
+ <author><personname><firstname>Vesa</firstname><surname>Karvonen</surname></personname></author>
+
+ <librarypurpose>Helps boost library developers adapt to compiler idiosyncrasies; not intended for library users</librarypurpose>
+ <librarycategory name="category:broken"/>
+ </libraryinfo>
+ </library>
+
+ <library name="Conversion" dirname="conversion" html-only="1" url="../../libs/conversion/index.html">
+ <libraryinfo>
+ <author><personname><firstname>Dave</firstname><surname>Abrahams</surname></personname></author>
+ <author><personname><firstname>Kevlin</firstname><surname>Henney</surname></personname></author>
+
+ <librarypurpose>Numeric, polymorphic, and lexical casts</librarypurpose>
+ <librarycategory name="category:misc"/>
+ </libraryinfo>
+ </library>
+
+ <library name="CRC" dirname="crc" html-only="1">
+ <libraryinfo>
+ <author><personname><firstname>Daryle</firstname><surname>Walker</surname></personname></author>
+
+ <librarypurpose>Cyclic Redundancy Code</librarypurpose>
+ <librarycategory name="category:misc"/>
+ </libraryinfo>
+ </library>
+
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../libs/date_time/xmldoc/date_time.xml"/>
+
+ <library name="Dynamic Bitset" dirname="dynamic_bitset" html-only="1">
+ <libraryinfo>
+ <author><personname><firstname>Jeremy</firstname><surname>Siek</surname></personname></author>
+ <author><personname><firstname>Chuck</firstname><surname>Allison</surname></personname></author>
+ <librarypurpose>A runtime sized version of <code>std::bitset</code></librarypurpose>
+ <librarycategory name="category:containers"/>
+ </libraryinfo>
+ </library>
+
+ <library name="Format" dirname="format" html-only="1" url="../../libs/format/index.html">
+ <libraryinfo>
+ <author><personname><firstname>Samuel</firstname><surname>Krempp</surname></personname></author>
+
+ <librarypurpose>Type-safe 'printf-like' format operations</librarypurpose>
+ <librarycategory name="category:string-text"/>
+ <librarycategory name="category:io"/>
+ </libraryinfo>
+ </library>
+
+ <library name="Filesystem" dirname="filesystem" html-only="1">
+ <libraryinfo>
+ <author><personname><firstname>Beman</firstname><surname>Dawes</surname></personname></author>
+
+ <librarypurpose>Portable paths, iteration over directories, and other useful filesystem operations</librarypurpose>
+ <librarycategory name="category:misc"/>
+ </libraryinfo>
+ </library>
+
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="foreach.xml"/>
+
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../libs/function/doc/function.xml"/>
+
+ <library name="Functional" dirname="functional" html-only="1">
+ <libraryinfo>
+ <author><personname><firstname>Mark</firstname><surname>Rodgers</surname></personname></author>
+ <librarypurpose>Enhanced function object adaptors</librarypurpose>
+ <librarycategory name="category:higher-order"/>
+ </libraryinfo>
+ </library>
+
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="hash.xml"/>
+
+ <library name="Graph" dirname="graph" html-only="1">
+ <libraryinfo>
+ <author><personname><firstname>Jeremy</firstname><surname>Siek</surname></personname></author>
+ <author><personname><firstname>University of Notre Dame</firstname><surname>Team</surname></personname></author>
+ <librarypurpose>Generic graph components and algorithms</librarypurpose>
+ <librarycategory name="category:containers"/>
+ <librarycategory name="category:iterators"/>
+ <librarycategory name="category:algorithms"/>
+ </libraryinfo>
+ </library>
+
+ <library name="Integer" dirname="integer" html-only="1" url="../../libs/integer/index.html">
+ <libraryinfo>
+ <author><personname><firstname>various</firstname><surname>authors</surname></personname></author>
+
+ <librarypurpose>Headers to ease dealing with integral types</librarypurpose>
+ <librarycategory name="category:math"/>
+ </libraryinfo>
+ </library>
+
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="interprocess.xml"/>
+
+ <library name="Interval" dirname="numeric/interval" html-only="1" url="../../libs/numeric/interval/doc/index.html">
+ <libraryinfo>
+ <author><personname><firstname>Guillaume</firstname><surname>Melquiond</surname></personname></author>
+ <author><personname><firstname>Hervé</firstname><surname>Brönnimann</surname></personname></author>
+ <author><personname><firstname>Sylvain</firstname><surname>Pion</surname></personname></author>
+
+ <librarypurpose>Extends the usual arithmetic functions to mathematical intervals</librarypurpose>
+ <librarycategory name="category:math"/>
+ </libraryinfo>
+ </library>
+
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="intrusive.xml"/>
+
+ <library name="I/O State Savers" dirname="io" html-only="1">
+ <libraryinfo>
+ <author><personname><firstname>Daryle</firstname><surname>Walker</surname></personname></author>
+
+ <librarypurpose>Save I/O state to prevent jumbled data</librarypurpose>
+ <librarycategory name="category:io"/>
+ </libraryinfo>
+ </library>
+
+ <library name="Iterator Adaptors" dirname="utility" html-only="1" url="../../libs/utility/iterator_adaptors.htm">
+ <libraryinfo>
+ <author><personname><firstname>Dave</firstname><surname>Abrahams</surname></personname></author>
+ <author><personname><firstname>Jeremy</firstname><surname>Siek</surname></personname></author>
+ <author><personname><firstname>John</firstname><surname>Potter</surname></personname></author>
+
+ <librarypurpose>Adapt a base type into a standard conforming iterator</librarypurpose>
+ <librarycategory name="category:iterators"/>
+ </libraryinfo>
+ </library>
+
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../libs/lambda/doc/lambda.xml"/>
+
+ <library name="Math" dirname="math" html-only="1">
+ <libraryinfo>
+ <author><personname><firstname>various</firstname><surname>authors</surname></personname></author>
+
+ <librarypurpose>Several contributions in the domain of mathematics</librarypurpose>
+ <librarycategory name="category:math"/>
+ </libraryinfo>
+ </library>
+
+ <library name="Math/Common Factor" dirname="math/common_factor" html-only="1" url="../../libs/math/doc/common_factor.html">
+ <libraryinfo>
+ <author><personname><firstname>Daryle</firstname><surname>Walker</surname></personname></author>
+
+ <librarypurpose>Greatest common divisor and least common multiple</librarypurpose>
+ <librarycategory name="category:math"/>
+ </libraryinfo>
+ </library>
+
+ <library name="Math/Octonion" dirname="math/octonion" html-only="1">
+ <libraryinfo>
+ <author><personname><firstname>Hubert</firstname><surname>Holin</surname></personname></author>
+
+ <librarypurpose>Octonions</librarypurpose>
+ <librarycategory name="category:math"/>
+ </libraryinfo>
+ </library>
+
+ <library name="Math/Quaternion" dirname="math/quaternion" html-only="1">
+ <libraryinfo>
+ <author><personname><firstname>Hubert</firstname><surname>Holin</surname></personname></author>
+
+ <librarypurpose>Quaternions</librarypurpose>
+ <librarycategory name="category:math"/>
+ </libraryinfo>
+ </library>
+
+ <library name="Math/Special Functions" dirname="math/special_functions" html-only="1">
+ <libraryinfo>
+ <author><personname><firstname>Hubert</firstname><surname>Holin</surname></personname></author>
+
+ <librarypurpose>Mathematical special functions such as atanh, sinc, and sinhc</librarypurpose>
+ <librarycategory name="category:math"/>
+ </libraryinfo>
+ </library>
+
+ <library name="MPL" dirname="mpl" html-only="1">
+ <libraryinfo>
+ <author><personname><firstname>Aleksey</firstname><surname>Gurtovoy</surname></personname></author>
+
+ <librarypurpose>Template metaprogramming framework of compile-time algorithms, sequences and metafunction classes</librarypurpose>
+ <librarycategory name="category:template"/>
+ </libraryinfo>
+ </library>
+
+ <library name="Multi Array" dirname="multi_array" html-only="1">
+ <libraryinfo>
+ <author><personname><firstname>Ron</firstname><surname>Garcia</surname></personname></author>
+
+ <librarypurpose>Multidimensional containers and adaptors for arrays of contiguous data</librarypurpose>
+ <librarycategory name="category:math"/>
+ <librarycategory name="category:containers"/>
+ </libraryinfo>
+ </library>
+
+ <library name="Operators" dirname="utility" html-only="1">
+ <libraryinfo>
+ <author><personname><firstname>Dave</firstname><surname>Abrahams</surname></personname></author>
+ <author><personname><firstname>Jeremy</firstname><surname>Siek</surname></personname></author>
+
+ <librarypurpose>Templates ease arithmetic classes and iterators</librarypurpose>
+ <librarycategory name="category:generic"/>
+ <librarycategory name="category:iterators"/>
+ <librarycategory name="category:math"/>
+ </libraryinfo>
+ </library>
+
+ <library name="Optional" dirname="optional" html-only="1">
+ <libraryinfo>
+ <author><personname><firstname>Fernando</firstname><surname>Cacciola</surname></personname></author>
+
+ <librarypurpose>Discriminated-union wrapper for optional values</librarypurpose>
+ <librarycategory name="category:misc"/>
+ <librarycategory name="category:data-structures"/>
+ </libraryinfo>
+ </library>
+
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="mpi.xml"/>
+
+ <library name="Pool" dirname="pool" html-only="1">
+ <libraryinfo>
+ <author><personname><firstname>Steve</firstname><surname>Cleary</surname></personname></author>
+
+ <librarypurpose>Memory pool management</librarypurpose>
+ <librarycategory name="category:memory"/>
+ </libraryinfo>
+ </library>
+
+ <library name="Preprocessor" dirname="preprocessor" html-only="1">
+ <libraryinfo>
+ <author><personname><firstname>Vesa</firstname><surname>Karvonen</surname></personname></author>
+ <author><personname><firstname>Paul</firstname><surname>Mensonides</surname></personname></author>
+
+ <librarypurpose>Preprocessor metaprogramming tools including repetition and recursion</librarypurpose>
+ <librarycategory name="category:preprocessor"/>
+ </libraryinfo>
+ </library>
+
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../libs/program_options/doc/program_options.xml"/>
+
+ <library name="Property Map" dirname="property_map" html-only="1">
+ <libraryinfo>
+ <author><personname><firstname>Jeremy</firstname><surname>Siek</surname></personname></author>
+ <librarypurpose>Concepts defining interfaces which map key objects to value objects</librarypurpose>
+ <librarycategory name="category:containers"/>
+ <librarycategory name="category:generic"/>
+ </libraryinfo>
+ </library>
+
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="property_tree.xml"/>
+
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="proto.xml"/>
+
+ <library name="Python" dirname="python" html-only="1">
+ <libraryinfo>
+ <author><personname><firstname>Dave</firstname><surname>Abrahams</surname></personname></author>
+ <librarypurpose>Reflects C++ classes and functions into <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.python.org">Python</link></librarypurpose>
+ <librarycategory name="category:lang"/>
+ </libraryinfo>
+ </library>
+
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="random.xml"/>
+
+ <library name="Rational" dirname="rational" html-only="1">
+ <libraryinfo>
+ <author><personname><firstname>Paul</firstname><surname>Moore</surname></personname></author>
+ <librarypurpose>A rational number class</librarypurpose>
+ <librarycategory name="category:math"/>
+ </libraryinfo>
+ </library>
+
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../libs/bind/doc/ref.xml"/>
+
+ <library name="Regex" dirname="regex" html-only="1" url="../../libs/regex/index.html">
+ <libraryinfo>
+ <author><personname><firstname>John</firstname><surname>Maddock</surname></personname></author>
+ <librarypurpose>Regular expression library</librarypurpose>
+ <librarycategory name="category:string-text"/>
+ </libraryinfo>
+ </library>
+
+ <library name="Serialization" dirname="serialization" html-only="1" url="../../libs/serialization/index.html">
+ <libraryinfo>
+ <author><personname><firstname>Robert</firstname><surname>Ramey</surname></personname></author>
+ <librarypurpose>Serialization of C++ objects for persistence and marshalling</librarypurpose>
+ <librarycategory name="category:io"/>
+ </libraryinfo>
+ </library>
+
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../libs/signals/doc/signals.xml"/>
+
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../libs/signals2/doc/signals.xml"/>
+
+ <library name="Smart Pointer" dirname="smart_ptr" html-only="1" url="../../libs/smart_ptr/index.html">
+ <libraryinfo>
+ <author><personname><firstname>Greg</firstname><surname>Colvin</surname></personname></author>
+ <author><personname><firstname>Beman</firstname><surname>Dawes</surname></personname></author>
+ <author><personname><firstname>Peter</firstname><surname>Dimov</surname></personname></author>
+ <author><personname><firstname>Darin</firstname><surname>Adler</surname></personname></author>
+ <librarypurpose>Six smart pointer class templates</librarypurpose>
+ <librarycategory name="category:memory"/>
+ </libraryinfo>
+ </library>
+
+ <library name="Spirit" dirname="spirit" html-only="1">
+ <libraryinfo>
+ <author><personname><firstname>Joel</firstname><surname>de Guzman</surname></personname></author>
+ <author><personname><firstname>team</firstname></personname></author>
+
+ <librarypurpose>LL parser framework represents parsers directly as EBNF grammars in inlined C++</librarypurpose>
+ <librarycategory name="category:text"/>
+ <librarycategory name="category:parsing"/>
+ </libraryinfo>
+ </library>
+
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="static_assert.xml"/>
+
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../libs/algorithm/string/doc/string_algo.xml"/>
+
+ <library name="Test" dirname="test" html-only="1">
+ <libraryinfo>
+ <author><personname><firstname>Gennadiy</firstname><surname>Rozental</surname></personname></author>
+ <librarypurpose>Support for simple program testing, full unit testing, and for program execution monitoring</librarypurpose>
+ <librarycategory name="category:testing"/>
+ </libraryinfo>
+ </library>
+
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="thread.xml"/>
+
+ <library name="Timer" dirname="timer" html-only="1" url="../../libs/timer/index.html">
+ <libraryinfo>
+ <author><personname><firstname>Beman</firstname><surname>Dawes</surname></personname></author>
+ <librarypurpose>Event timer, progress timer, and progress display classes</librarypurpose>
+ <librarycategory name="category:misc"/>
+ </libraryinfo>
+ </library>
+
+ <library name="Tokenizer" dirname="tokenizer" html-only="1" url="../../libs/tokenizer/index.html">
+ <libraryinfo>
+ <author><personname><firstname>John</firstname><surname>Bandela</surname></personname></author>
+ <librarypurpose>Break of a string or other character sequence into a series of tokens</librarypurpose>
+ <librarycategory name="category:string-text"/>
+ <librarycategory name="category:iterators"/>
+ </libraryinfo>
+ </library>
+
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="tr1.xml"/>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../libs/logic/doc/tribool.boostbook"/>
+
+ <library name="Tuple" dirname="tuple" html-only="1">
+ <libraryinfo>
+ <author><personname><firstname>Jaakko</firstname><surname>Järvi</surname></personname></author>
+ <librarypurpose>Ease definition of functions returning multiple values, and more</librarypurpose>
+ <librarycategory name="category:data-structures"/>
+ </libraryinfo>
+ </library>
+
+ <library name="Type Traits" dirname="type_traits" html-only="1">
+ <libraryinfo>
+ <author><personname><firstname>John</firstname><surname>Maddock</surname></personname></author>
+ <librarypurpose>Meta-programming support library.</librarypurpose>
+ <librarycategory name="category:generic"/>
+ </libraryinfo>
+ </library>
+
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="typeof.xml"/>
+
+ <library name="uBLAS" dirname="numeric/ublas" html-only="1">
+ <libraryinfo>
+ <author><personname><firstname>Joerg</firstname><surname>Walter</surname></personname></author>
+ <author><personname><firstname>Mathias</firstname><surname>Koch</surname></personname></author>
+ <librarypurpose>Basic linear algebra for dense, packed and sparse matrices</librarypurpose>
+ <librarycategory name="category:math"/>
+ </libraryinfo>
+ </library>
+
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="units.xml"/>
+
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="unordered.xml"/>
+
+ <library name="Utility" dirname="utility" html-only="1">
+ <libraryinfo>
+ <author><personname><firstname>Dave</firstname><surname>Abrahams</surname></personname></author>
+ <author><personname><firstname>others</firstname></personname></author>
+
+ <librarypurpose>Class noncopyable plus <functionname>checked_delete</functionname>, <functionname>checked_array_delete</functionname>, <functionname>next</functionname>, <functionname>prior</functionname> function templates, plus base-from-member idiom</librarypurpose>
+ <librarycategory name="category:misc"/>
+ <librarycategory name="category:memory"/>
+ <librarycategory name="category:algorithms"/>
+ </libraryinfo>
+ </library>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../libs/variant/doc/variant.xml"/>
+
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="xpressive.xml"/>
+ -->
+ </part>
+
+ <part xml:id="tools"><info><title>Boost Tools</title></info>
+
+ <partintro>
+ <para>
+ Boost developers, testers, and maintainers have developed various programs to
+ help with the administration of the Boost Libraries. Like everything else about
+ Boost, these tools are available in source form, and are part of the regular
+ Boost distribution.
+ </para>
+ <para>
+ Users may find these tools useful when porting Boost libraries to a new platform,
+ or for use with their own applications.
+ </para>
+ </partintro>
+<!--
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="any.xml"/>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="quickbook.xml"/>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="bjam.xml"/>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../tools/build/v2/doc/src/userman.xml"/>
+ -->
+ </part>
+</api>
--- /dev/null
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Acknowledgements</title>
+<link rel="stylesheet" href=".././api.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
+<link rel="home" href="../index.html" title="">
+<link rel="up" href="../id18968-bb.html" title="Chapter 1. Boost.Any">
+<link rel="prev" href="../boost/any_cast.html" title="Function any_cast">
+<link rel="next" href="../tools.html" title="Part II. Boost Tools">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr class="api-head"><td valign="top" style="background-color: rgb(0,165,165); width: 100%;"><a href="http://wiki.docbook.org/topic/BoostBookIntegration"><img alt="DocBook API Dcoumentation" width="300" height="100" src=".././images/db-api.png"></a></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../boost/any_cast.html"><img src=".././images/prev.png" alt="Prev"></a><a accesskey="u" href="../id18968-bb.html"><img src=".././images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src=".././images/home.png" alt="Home"></a><a accesskey="n" href="../tools.html"><img src=".././images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="any.acknowledgments"></a>Acknowledgements</h2></div></div></div>
+<p>Doug Gregor ported the documentation to the BoostBook format.</p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer"></div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../boost/any_cast.html"><img src=".././images/prev.png" alt="Prev"></a><a accesskey="u" href="../id18968-bb.html"><img src=".././images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src=".././images/home.png" alt="Home"></a><a accesskey="n" href="../tools.html"><img src=".././images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
--- /dev/null
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Examples</title>
+<link rel="stylesheet" href=".././api.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
+<link rel="home" href="../index.html" title="">
+<link rel="up" href="../id18968-bb.html" title="Chapter 1. Boost.Any">
+<link rel="prev" href="../id18968-bb.html" title="Chapter 1. Boost.Any">
+<link rel="next" href="reference.html" title="Reference">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr class="api-head"><td valign="top" style="background-color: rgb(0,165,165); width: 100%;"><a href="http://wiki.docbook.org/topic/BoostBookIntegration"><img alt="DocBook API Dcoumentation" width="300" height="100" src=".././images/db-api.png"></a></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../id18968-bb.html"><img src=".././images/prev.png" alt="Prev"></a><a accesskey="u" href="../id18968-bb.html"><img src=".././images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src=".././images/home.png" alt="Home"></a><a accesskey="n" href="reference.html"><img src=".././images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="any.examples"></a>Examples</h2></div></div></div>
+<p>The following code demonstrates the syntax for using
+ implicit conversions to and copying of any objects:</p>
+<pre class="programlisting">
+#include <list>
+#include <boost/any.hpp>
+
+using <code class="computeroutput"><a class="link" href="../boost/any_cast.html" title="Function any_cast">boost::any_cast</a></code>;
+typedef std::list<<code class="computeroutput"><a class="link" href="../boost/any.html" title="Class any">boost::any</a></code>> many;
+
+void append_int(many & values, int value)
+{
+ <code class="computeroutput"><a class="link" href="../boost/any.html" title="Class any">boost::any</a></code> to_append = value;
+ values.push_back(to_append);
+}
+
+void append_string(many & values, const std::string & value)
+{
+ values.push_back(value);
+}
+
+void append_char_ptr(many & values, const char * value)
+{
+ values.push_back(value);
+}
+
+void append_any(many & values, const <code class="computeroutput"><a class="link" href="../boost/any.html" title="Class any">boost::any</a></code> & value)
+{
+ values.push_back(value);
+}
+
+void append_nothing(many & values)
+{
+ values.push_back(<code class="computeroutput"><a class="link" href="../boost/any.html" title="Class any">boost::any</a></code>());
+}
+</pre>
+<p>The following predicates follow on from the previous
+ definitions and demonstrate the use of queries on any
+ objects:</p>
+<pre class="programlisting">
+bool is_empty(const <code class="computeroutput"><a class="link" href="../boost/any.html" title="Class any">boost::any</a></code> & operand)
+{
+ return operand.<code class="computeroutput"><a class="link" href="../boost/any.html#id61996-bb">empty</a></code>();
+}
+
+bool is_int(const <code class="computeroutput"><a class="link" href="../boost/any.html" title="Class any">boost::any</a></code> & operand)
+{
+ return operand.<code class="computeroutput"><a class="link" href="../boost/any.html#id62025-bb">type</a></code>() == typeid(int);
+}
+
+bool is_char_ptr(const <code class="computeroutput"><a class="link" href="../boost/any.html" title="Class any">boost::any</a></code> & operand)
+{
+ try
+ {
+ <code class="computeroutput"><a class="link" href="../boost/any_cast.html" title="Function any_cast">any_cast</a></code><const char *>(operand);
+ return true;
+ }
+ catch(const <code class="computeroutput"><a class="link" href="../boost/bad_any_cast.html" title="Class bad_any_cast">boost::bad_any_cast</a></code> &)
+ {
+ return false;
+ }
+}
+
+bool is_string(const <code class="computeroutput"><a class="link" href="../boost/any.html" title="Class any">boost::any</a></code> & operand)
+{
+ return <code class="computeroutput"><a class="link" href="../boost/any_cast.html" title="Function any_cast">any_cast</a></code><std::string>(&operand);
+}
+
+void count_all(many & values, std::ostream & out)
+{
+ out << "#empty == "
+ << std::count_if(values.begin(), values.end(), is_empty) << std::endl;
+ out << "#int == "
+ << std::count_if(values.begin(), values.end(), is_int) << std::endl;
+ out << "#const char * == "
+ << std::count_if(values.begin(), values.end(), is_char_ptr) << std::endl;
+ out << "#string == "
+ << std::count_if(values.begin(), values.end(), is_string) << std::endl;
+}
+</pre>
+<p>The following type, patterned after the OMG's Property Service, defines name-value pairs for arbitrary value types:</p>
+<pre class="programlisting">
+struct property
+{
+ property();
+ property(const std::string &, const <code class="computeroutput"><a class="link" href="../boost/any.html" title="Class any">boost::any</a></code> &);
+
+ std::string name;
+ <code class="computeroutput"><a class="link" href="../boost/any.html" title="Class any">boost::any</a></code> value;
+};
+
+typedef std::list<property> properties;
+</pre>
+<p>The following base class demonstrates one approach to
+ runtime polymorphism based callbacks that also require arbitrary
+ argument types. The absence of virtual member templates requires
+ that different solutions have different trade-offs in terms of
+ efficiency, safety, and generality. Using a checked variant type
+ offers one approach:</p>
+<pre class="programlisting">
+class consumer
+{
+public:
+ virtual void notify(const <code class="computeroutput"><a class="link" href="../boost/any.html" title="Class any">any</a></code> &) = 0;
+ ...
+};
+</pre>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer"></div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../id18968-bb.html"><img src=".././images/prev.png" alt="Prev"></a><a accesskey="u" href="../id18968-bb.html"><img src=".././images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src=".././images/home.png" alt="Home"></a><a accesskey="n" href="reference.html"><img src=".././images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
--- /dev/null
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Reference</title>
+<link rel="stylesheet" href=".././api.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
+<link rel="home" href="../index.html" title="">
+<link rel="up" href="../id18968-bb.html" title="Chapter 1. Boost.Any">
+<link rel="prev" href="examples.html" title="Examples">
+<link rel="next" href="../boost/bad_any_cast.html" title="Class bad_any_cast">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr class="api-head"><td valign="top" style="background-color: rgb(0,165,165); width: 100%;"><a href="http://wiki.docbook.org/topic/BoostBookIntegration"><img alt="DocBook API Dcoumentation" width="300" height="100" src=".././images/db-api.png"></a></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="examples.html"><img src=".././images/prev.png" alt="Prev"></a><a accesskey="u" href="../id18968-bb.html"><img src=".././images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src=".././images/home.png" alt="Home"></a><a accesskey="n" href="../boost/bad_any_cast.html"><img src=".././images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="any.reference"></a>Reference</h2></div></div></div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="any.ValueType"></a><span class="bold"><strong>ValueType</strong></span> requirements</h3></div></div></div>
+<p>Values are strongly informational objects for which
+ identity is not significant, i.e. the focus is principally on
+ their state content and any behavior organized around
+ that. Another distinguishing feature of values is their
+ granularity: normally fine-grained objects representing simple
+ concepts in the system such as quantities.</p>
+<p>As the emphasis of a value lies in its state not its
+ identity, values can be copied and typically assigned one to
+ another, requiring the explicit or implicit definition of a
+ public copy constructor and public assignment operator. Values
+ typically live within other scopes, i.e. within objects or
+ blocks, rather than on the heap. Values are therefore normally
+ passed around and manipulated directly as variables or through
+ references, but not as pointers that emphasize identity and
+ indirection.</p>
+<p>The specific requirements on value types to be used in an
+ <code class="computeroutput"><a class="link" href="../boost/any.html" title="Class any">any</a></code>
+ are:</p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc" compact>
+<li class="listitem">A <span class="emphasis"><em>ValueType</em></span> is
+ <span class="emphasis"><em>CopyConstructible</em></span> [20.1.3].</li>
+<li class="listitem">A <span class="emphasis"><em>ValueType</em></span> is
+ optionally <span class="emphasis"><em>Assignable</em></span> [23.1]. The strong
+ exception-safety guarantee is required for all forms of
+ assignment.</li>
+<li class="listitem">The destructor for a
+ <span class="emphasis"><em>ValueType</em></span> upholds the no-throw
+ exception-safety guarantee.</li>
+</ul></div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="header.boost.any_hpp"></a>Header <<a class="ulink" href="../../boost/any.hpp" target="_top">boost/any.hpp</a>></h3></div></div></div>
+<pre class="synopsis"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span>
+ <span class="keyword">class</span> <a class="link" href="../boost/bad_any_cast.html" title="Class bad_any_cast">bad_any_cast</a><span class="special">;</span>
+ <span class="keyword">class</span> <a class="link" href="../boost/any.html" title="Class any">any</a><span class="special">;</span>
+ <span class="keyword">template</span><span class="special"><</span><span class="special">></span> <span class="identifier">T</span> <a class="link" href="../boost/any_cast.html" title="Function any_cast"><span class="identifier">any_cast</span></a><span class="special">(</span><a class="link" href="../boost/any.html" title="Class any">any</a> <span class="special">&</span><span class="special">)</span><span class="special">;</span>
+ <span class="keyword">template</span><span class="special"><</span><span class="special">></span> <span class="identifier">T</span> <a class="link" href="../boost/any_cast.html" title="Function any_cast"><span class="identifier">any_cast</span></a><span class="special">(</span><span class="keyword">const</span> <a class="link" href="../boost/any.html" title="Class any">any</a> <span class="special">&</span><span class="special">)</span><span class="special">;</span>
+ <span class="keyword">template</span><span class="special"><</span><span class="special">></span> <span class="keyword">const</span> <span class="identifier">ValueType</span> <span class="special">*</span> <a class="link" href="../boost/any_cast.html" title="Function any_cast"><span class="identifier">any_cast</span></a><span class="special">(</span><span class="keyword">const</span> <a class="link" href="../boost/any.html" title="Class any">any</a> <span class="special">*</span><span class="special">)</span><span class="special">;</span>
+ <span class="keyword">template</span><span class="special"><</span><span class="special">></span> <span class="identifier">ValueType</span> <span class="special">*</span> <a class="link" href="../boost/any_cast.html" title="Function any_cast"><span class="identifier">any_cast</span></a><span class="special">(</span><a class="link" href="../boost/any.html" title="Class any">any</a> <span class="special">*</span><span class="special">)</span><span class="special">;</span>
+<span class="special">}</span></pre>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer"></div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="examples.html"><img src=".././images/prev.png" alt="Prev"></a><a accesskey="u" href="../id18968-bb.html"><img src=".././images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src=".././images/home.png" alt="Home"></a><a accesskey="n" href="../boost/bad_any_cast.html"><img src=".././images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
--- /dev/null
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Class any</title>
+<link rel="stylesheet" href=".././api.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
+<link rel="home" href="../index.html" title="">
+<link rel="up" href="../any/reference.html#header.boost.any_hpp" title="Header <boost/any.hpp>">
+<link rel="prev" href="bad_any_cast.html" title="Class bad_any_cast">
+<link rel="next" href="any_cast.html" title="Function any_cast">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr class="api-head"><td valign="top" style="background-color: rgb(0,165,165); width: 100%;"><a href="http://wiki.docbook.org/topic/BoostBookIntegration"><img alt="DocBook API Dcoumentation" width="300" height="100" src=".././images/db-api.png"></a></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="bad_any_cast.html"><img src=".././images/prev.png" alt="Prev"></a><a accesskey="u" href="../any/reference.html#header.boost.any_hpp"><img src=".././images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src=".././images/home.png" alt="Home"></a><a accesskey="n" href="any_cast.html"><img src=".././images/next.png" alt="Next"></a>
+</div>
+<div class="refentry">
+<a name="boost.any"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Class any</span></h2>
+<p>boost::any — A class whose instances can hold instances of any
+ type that satisfies <a class="link" href="../any/reference.html#any.ValueType" title="ValueType requirements">ValueType</a>
+ requirements.</p>
+</div>
+<div class="refsynopsisdiv">
+<h2>Synopsis</h2>
+<pre class="synopsis"><span class="comment">// In header: <<a class="link" href="../any/reference.html#header.boost.any_hpp" title="Header <boost/any.hpp>">boost/any.hpp</a>>
+
+</span>
+<span class="keyword">class</span> <a class="link" href="any.html" title="Class any">any</a> <span class="special">{</span>
+<span class="keyword">public</span><span class="special">:</span>
+ <span class="comment">// <a class="link" href="any.html#boost.anyconstruct-copy-destruct">construct/copy/destruct</a></span>
+ <a class="link" href="any.html#id61705-bb"><span class="identifier">any</span></a><span class="special">(</span><span class="special">)</span><span class="special">;</span>
+ <a class="link" href="any.html#id61718-bb"><span class="identifier">any</span></a><span class="special">(</span><span class="keyword">const</span> <a class="link" href="any.html" title="Class any">any</a> <span class="special">&</span><span class="special">)</span><span class="special">;</span>
+ <span class="keyword">template</span><span class="special"><</span><span class="special">></span> <a class="link" href="any.html#id61766-bb"><span class="identifier">any</span></a><span class="special">(</span><span class="keyword">const</span> <span class="identifier">ValueType</span> <span class="special">&</span><span class="special">)</span><span class="special">;</span>
+ <a class="link" href="any.html" title="Class any">any</a> <span class="special">&</span> <a class="link" href="any.html#id61826-bb"><span class="keyword">operator</span><span class="special">=</span></a><span class="special">(</span><span class="keyword">const</span> <a class="link" href="any.html" title="Class any">any</a> <span class="special">&</span><span class="special">)</span><span class="special">;</span>
+ <span class="keyword">template</span><span class="special"><</span><span class="special">></span> <a class="link" href="any.html" title="Class any">any</a> <span class="special">&</span> <a class="link" href="any.html#id61883-bb"><span class="keyword">operator</span><span class="special">=</span></a><span class="special">(</span><span class="keyword">const</span> <span class="identifier">ValueType</span> <span class="special">&</span><span class="special">)</span><span class="special">;</span>
+ <a class="link" href="any.html#id61812-bb"><span class="special">~</span><span class="identifier">any</span></a><span class="special">(</span><span class="special">)</span><span class="special">;</span>
+
+ <span class="comment">// <a class="link" href="any.html#id61937-bb">modifiers</a></span>
+ <a class="link" href="any.html" title="Class any">any</a> <span class="special">&</span> <a class="link" href="any.html#id61941-bb"><span class="identifier">swap</span></a><span class="special">(</span><a class="link" href="any.html" title="Class any">any</a> <span class="special">&</span><span class="special">)</span><span class="special">;</span>
+
+ <span class="comment">// <a class="link" href="any.html#id61992-bb">queries</a></span>
+ <span class="keyword">bool</span> <a class="link" href="any.html#id61996-bb"><span class="identifier">empty</span></a><span class="special">(</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="keyword">const</span> std::type_info <span class="special">&</span> <a class="link" href="any.html#id62025-bb"><span class="identifier">type</span></a><span class="special">(</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span>
+<span class="special">}</span><span class="special">;</span></pre>
+</div>
+<div class="refsect1">
+<a name="id775478"></a><h2>Description</h2>
+<div class="refsect2">
+<a name="id775481"></a><h3>
+<a name="boost.anyconstruct-copy-destruct"></a><code class="computeroutput">any</code>
+ public
+ construct/copy/destruct</h3>
+<div class="orderedlist"><ol class="orderedlist" type="1">
+<li class="listitem">
+<pre class="literallayout"><a name="id61705-bb"></a><span class="identifier">any</span><span class="special">(</span><span class="special">)</span><span class="special">;</span></pre>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td><p><span class="term">Postconditions:</span></p></td>
+<td><code class="computeroutput">this-><a class="link" href="any.html#id61996-bb">empty</a>()</code></td>
+</tr></tbody>
+</table></div>
+</li>
+<li class="listitem">
+<pre class="literallayout"><a name="id61718-bb"></a><span class="identifier">any</span><span class="special">(</span><span class="keyword">const</span> <a class="link" href="any.html" title="Class any">any</a> <span class="special">&</span> other<span class="special">)</span><span class="special">;</span></pre>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term">Effects:</span></p></td>
+<td> Copy constructor that copies content of
+ <code class="computeroutput">other</code> into new instance, so that any content
+ is equivalent in both type and value to the content of
+ <code class="computeroutput">other</code>, or empty if <code class="computeroutput">other</code> is
+ empty. </td>
+</tr>
+<tr>
+<td><p><span class="term">Throws:</span></p></td>
+<td>May fail with a
+ <code class="computeroutput">std::bad_alloc</code>
+ exception or any exceptions arising from the copy
+ constructor of the contained type.</td>
+</tr>
+</tbody>
+</table></div>
+</li>
+<li class="listitem">
+<pre class="literallayout"><span class="keyword">template</span><span class="special"><</span><span class="special">></span> <a name="id61766-bb"></a><span class="identifier">any</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">ValueType</span> <span class="special">&</span> value<span class="special">)</span><span class="special">;</span></pre>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term">Effects:</span></p></td>
+<td>Makes a copy of <code class="computeroutput">value</code>, so
+ that the initial content of the new instance is equivalent
+ in both type and value to
+ <code class="computeroutput">value</code>.</td>
+</tr>
+<tr>
+<td><p><span class="term">Throws:</span></p></td>
+<td>
+<code class="computeroutput">std::bad_alloc</code>
+ or any exceptions arising from the copy constructor of the
+ contained type.</td>
+</tr>
+</tbody>
+</table></div>
+</li>
+<li class="listitem">
+<pre class="literallayout"><a class="link" href="any.html" title="Class any">any</a> <span class="special">&</span> <a name="id61826-bb"></a><span class="keyword">operator</span><span class="special">=</span><span class="special">(</span><span class="keyword">const</span> <a class="link" href="any.html" title="Class any">any</a> <span class="special">&</span> rhs<span class="special">)</span><span class="special">;</span></pre>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term">Effects:</span></p></td>
+<td>Copies content of <code class="computeroutput">rhs</code> into
+ current instance, discarding previous content, so that the
+ new content is equivalent in both type and value to the
+ content of <code class="computeroutput">rhs</code>, or empty if
+ <code class="computeroutput">rhs.<a class="link" href="any.html#id61996-bb">empty</a>()</code>.</td>
+</tr>
+<tr>
+<td><p><span class="term">Throws:</span></p></td>
+<td>
+<code class="computeroutput">std::bad_alloc</code>
+ or any exceptions arising from the copy constructor of the
+ contained type. Assignment satisfies the strong guarantee
+ of exception safety.</td>
+</tr>
+</tbody>
+</table></div>
+</li>
+<li class="listitem">
+<pre class="literallayout"><span class="keyword">template</span><span class="special"><</span><span class="special">></span> <a class="link" href="any.html" title="Class any">any</a> <span class="special">&</span> <a name="id61883-bb"></a><span class="keyword">operator</span><span class="special">=</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">ValueType</span> <span class="special">&</span> rhs<span class="special">)</span><span class="special">;</span></pre>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term">Effects:</span></p></td>
+<td>Makes a copy of <code class="computeroutput">rhs</code>,
+ discarding previous content, so that the new content of is
+ equivalent in both type and value to
+ <code class="computeroutput">rhs</code>.</td>
+</tr>
+<tr>
+<td><p><span class="term">Throws:</span></p></td>
+<td>
+<code class="computeroutput">std::bad_alloc</code>
+ or any exceptions arising from the copy constructor of the
+ contained type. Assignment satisfies the strong guarantee
+ of exception safety.</td>
+</tr>
+</tbody>
+</table></div>
+</li>
+<li class="listitem">
+<pre class="literallayout"><a name="id61812-bb"></a><span class="special">~</span><span class="identifier">any</span><span class="special">(</span><span class="special">)</span><span class="special">;</span></pre>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term">Effects:</span></p></td>
+<td>Releases any and all resources used in
+ management of instance.</td>
+</tr>
+<tr>
+<td><p><span class="term">Throws:</span></p></td>
+<td>Nothing.</td>
+</tr>
+</tbody>
+</table></div>
+</li>
+</ol></div>
+</div>
+<div class="refsect2">
+<a name="id775932"></a><h3>
+<a name="id61937-bb"></a><code class="computeroutput">any</code> modifiers</h3>
+<div class="orderedlist">
+<pre class="literallayout"><a class="link" href="any.html" title="Class any">any</a> <span class="special">&</span> <a name="id61941-bb"></a><span class="identifier">swap</span><span class="special">(</span><a class="link" href="any.html" title="Class any">any</a> <span class="special">&</span> rhs<span class="special">)</span><span class="special">;</span></pre>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term">Effects:</span></p></td>
+<td>Exchange of the contents of
+ <code class="computeroutput">*this</code> and
+ <code class="computeroutput">rhs</code>.</td>
+</tr>
+<tr>
+<td><p><span class="term">Returns:</span></p></td>
+<td><code class="computeroutput">*this</code></td>
+</tr>
+<tr>
+<td><p><span class="term">Throws:</span></p></td>
+<td>Nothing.</td>
+</tr>
+</tbody>
+</table></div>
+<ol class="orderedlist" type="1"></ol>
+</div>
+</div>
+<div class="refsect2">
+<a name="id776016"></a><h3>
+<a name="id61992-bb"></a><code class="computeroutput">any</code> queries</h3>
+<div class="orderedlist">
+<pre class="literallayout"><span class="keyword">bool</span> <a name="id61996-bb"></a><span class="identifier">empty</span><span class="special">(</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span></pre>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term">Returns:</span></p></td>
+<td>
+<code class="computeroutput">true</code> if instance is
+ empty, otherwise <code class="computeroutput">false</code>.</td>
+</tr>
+<tr>
+<td><p><span class="term">Throws:</span></p></td>
+<td>Will not throw.</td>
+</tr>
+</tbody>
+</table></div>
+<pre class="literallayout"><span class="keyword">const</span> std::type_info <span class="special">&</span> <a name="id62025-bb"></a><span class="identifier">type</span><span class="special">(</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span></pre>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term">Returns:</span></p></td>
+<td>the <code class="computeroutput">typeid</code> of the
+ contained value if instance is non-empty, otherwise
+ <code class="computeroutput">typeid(void)</code>.</td>
+</tr>
+<tr>
+<td><p><span class="term">Notes:</span></p></td>
+<td>Useful for querying against types known
+ either at compile time or only at
+ runtime.</td>
+</tr>
+</tbody>
+</table></div>
+<ol class="orderedlist" type="1"></ol>
+</div>
+</div>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer"></div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="bad_any_cast.html"><img src=".././images/prev.png" alt="Prev"></a><a accesskey="u" href="../any/reference.html#header.boost.any_hpp"><img src=".././images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src=".././images/home.png" alt="Home"></a><a accesskey="n" href="any_cast.html"><img src=".././images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
--- /dev/null
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Function any_cast</title>
+<link rel="stylesheet" href=".././api.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
+<link rel="home" href="../index.html" title="">
+<link rel="up" href="../any/reference.html#header.boost.any_hpp" title="Header <boost/any.hpp>">
+<link rel="prev" href="any.html" title="Class any">
+<link rel="next" href="../any/acknowledgments.html" title="Acknowledgements">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr class="api-head"><td valign="top" style="background-color: rgb(0,165,165); width: 100%;"><a href="http://wiki.docbook.org/topic/BoostBookIntegration"><img alt="DocBook API Dcoumentation" width="300" height="100" src=".././images/db-api.png"></a></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="any.html"><img src=".././images/prev.png" alt="Prev"></a><a accesskey="u" href="../any/reference.html#header.boost.any_hpp"><img src=".././images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src=".././images/home.png" alt="Home"></a><a accesskey="n" href="../any/acknowledgments.html"><img src=".././images/next.png" alt="Next"></a>
+</div>
+<div class="refentry">
+<a name="boost.any_cast"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Function any_cast</span></h2>
+<p>boost::any_cast — Custom keyword cast for extracting a value
+ of a given type from an
+ <code class="computeroutput"><a class="link" href="any.html" title="Class any">any</a></code>.</p>
+</div>
+<div class="refsynopsisdiv">
+<h2>Synopsis</h2>
+<pre class="synopsis"><span class="comment">// In header: <<a class="link" href="../any/reference.html#header.boost.any_hpp" title="Header <boost/any.hpp>">boost/any.hpp</a>>
+
+</span>
+<span class="keyword">template</span><span class="special"><</span><span class="special">></span> <span class="identifier">T</span> <span class="identifier">any_cast</span><span class="special">(</span><a class="link" href="any.html" title="Class any">any</a> <span class="special">&</span> operand<span class="special">)</span><span class="special">;</span>
+<span class="keyword">template</span><span class="special"><</span><span class="special">></span> <span class="identifier">T</span> <span class="identifier">any_cast</span><span class="special">(</span><span class="keyword">const</span> <a class="link" href="any.html" title="Class any">any</a> <span class="special">&</span> operand<span class="special">)</span><span class="special">;</span>
+<span class="keyword">template</span><span class="special"><</span><span class="special">></span> <span class="keyword">const</span> <span class="identifier">ValueType</span> <span class="special">*</span> <span class="identifier">any_cast</span><span class="special">(</span><span class="keyword">const</span> <a class="link" href="any.html" title="Class any">any</a> <span class="special">*</span> operand<span class="special">)</span><span class="special">;</span>
+<span class="keyword">template</span><span class="special"><</span><span class="special">></span> <span class="identifier">ValueType</span> <span class="special">*</span> <span class="identifier">any_cast</span><span class="special">(</span><a class="link" href="any.html" title="Class any">any</a> <span class="special">*</span> operand<span class="special">)</span><span class="special">;</span></pre>
+</div>
+<div class="refsect1">
+<a name="id776408"></a><h2>Description</h2>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term">Returns:</span></p></td>
+<td> If passed a pointer, it returns a
+ similarly qualified pointer to the value content if
+ successful, otherwise null is returned.
+ If T is ValueType, it returns a copy of the held value, otherwise, if T is a reference
+ to (possibly const qualified) ValueType, it returns a reference to the held
+ value.</td>
+</tr>
+<tr>
+<td><p><span class="term">Throws:</span></p></td>
+<td>Overloads taking an
+ <code class="computeroutput"><a class="link" href="any.html" title="Class any">any</a></code> pointer do not
+ throw; overloads taking an
+ <code class="computeroutput"><a class="link" href="any.html" title="Class any">any</a></code> value or reference
+ throws <code class="computeroutput"><a class="link" href="bad_any_cast.html" title="Class bad_any_cast">bad_any_cast</a></code> if
+ unsuccessful.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer"></div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="any.html"><img src=".././images/prev.png" alt="Prev"></a><a accesskey="u" href="../any/reference.html#header.boost.any_hpp"><img src=".././images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src=".././images/home.png" alt="Home"></a><a accesskey="n" href="../any/acknowledgments.html"><img src=".././images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
--- /dev/null
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Class bad_any_cast</title>
+<link rel="stylesheet" href=".././api.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
+<link rel="home" href="../index.html" title="">
+<link rel="up" href="../any/reference.html#header.boost.any_hpp" title="Header <boost/any.hpp>">
+<link rel="prev" href="../any/reference.html" title="Reference">
+<link rel="next" href="any.html" title="Class any">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr class="api-head"><td valign="top" style="background-color: rgb(0,165,165); width: 100%;"><a href="http://wiki.docbook.org/topic/BoostBookIntegration"><img alt="DocBook API Dcoumentation" width="300" height="100" src=".././images/db-api.png"></a></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../any/reference.html"><img src=".././images/prev.png" alt="Prev"></a><a accesskey="u" href="../any/reference.html#header.boost.any_hpp"><img src=".././images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src=".././images/home.png" alt="Home"></a><a accesskey="n" href="any.html"><img src=".././images/next.png" alt="Next"></a>
+</div>
+<div class="refentry">
+<a name="boost.bad_any_cast"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Class bad_any_cast</span></h2>
+<p>boost::bad_any_cast — The exception thrown in the event of a failed
+ <code class="computeroutput"><a class="link" href="any_cast.html" title="Function any_cast">any_cast</a></code> of an
+ <code class="computeroutput"><a class="link" href="any.html" title="Class any">any</a></code> value.</p>
+</div>
+<div class="refsynopsisdiv">
+<h2>Synopsis</h2>
+<pre class="synopsis"><span class="comment">// In header: <<a class="link" href="../any/reference.html#header.boost.any_hpp" title="Header <boost/any.hpp>">boost/any.hpp</a>>
+
+</span>
+<span class="keyword">class</span> <a class="link" href="bad_any_cast.html" title="Class bad_any_cast">bad_any_cast</a> <span class="special">:</span> <span class="keyword">public</span> std::bad_cast <span class="special">{</span>
+<span class="keyword">public</span><span class="special">:</span>
+ <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keyword">char</span> <span class="special">*</span> <a class="link" href="bad_any_cast.html#id61674-bb"><span class="identifier">what</span></a><span class="special">(</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span>
+<span class="special">}</span><span class="special">;</span></pre>
+</div>
+<div class="refsect1">
+<a name="id774994"></a><h2>Description</h2>
+<pre class="literallayout"><span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keyword">char</span> <span class="special">*</span> <a name="id61674-bb"></a><span class="identifier">what</span><span class="special">(</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span></pre>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer"></div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../any/reference.html"><img src=".././images/prev.png" alt="Prev"></a><a accesskey="u" href="../any/reference.html#header.boost.any_hpp"><img src=".././images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src=".././images/home.png" alt="Home"></a><a accesskey="n" href="any.html"><img src=".././images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>