123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- <?xml version="1.0" encoding="utf-8"?>
- <!DOCTYPE header PUBLIC "-//Boost//DTD BoostBook XML V1.0//EN"
- "http://www.boost.org/tools/boostbook/dtd/boostbook.dtd">
- <!--
- Copyright Douglas Gregor 2001-2004
- Distributed under the Boost Software License, Version 1.0. (See accompanying
- file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- -->
- <header name="boost/visit_each.hpp" last-revision="$Date: 2007-03-06 16:51:55 -0500 (Tue, 06 Mar 2007) $">
- <namespace name="boost">
- <function name="visit_each">
- <template>
- <template-type-parameter name="Visitor"/>
- <template-type-parameter name="T"/>
- </template>
- <type>void</type>
- <parameter name="visitor">
- <paramtype>const Visitor&</paramtype>
- </parameter>
- <parameter name="t">
- <paramtype>const T&</paramtype>
- </parameter>
- <parameter>
- <paramtype>int</paramtype>
- </parameter>
- <purpose>Allow limited exploration of class members.</purpose>
- <description>
- <para>The <functionname>visit_each</functionname> mechanism
- allows a visitor to be applied to every subobject in a given
- object. It was used by the Signals library to discover (now deprecated)
- <classname>signals::trackable</classname> objects within a
- function object, but other uses may surface if used
- universally (e.g., conservative garbage collection). To fit
- within the <functionname>visit_each</functionname> framework,
- a <functionname>visit_each</functionname> overload must be
- supplied for each object type. </para>
- </description>
- <effects><para><code>visitor(t)</code>, and for
- every subobject <code>x</code> of
- <code>t</code>:
- <itemizedlist>
- <listitem><para>If <code>x</code> is a reference, <code>visit_each(visitor, <functionname>ref</functionname>(x), 0)</code></para></listitem>
- <listitem><para>Otherwise, <code>visit_each(visitor, x, 0)</code></para></listitem>
- </itemizedlist>
- </para></effects>
- <notes><para>The third parameter is
- <code>long</code> for the fallback version
- of <functionname>visit_each</functionname> and the argument
- supplied to this third paramter must always be 0. The third
- parameter is an artifact of the widespread lack of proper
- function template ordering, and will be removed in the future.</para>
- <para>Library authors will be expected to add additional
- overloads that specialize the T argument for their classes, so
- that subobjects can be visited.</para>
- <para>Calls to visit_each are required to be unqualified, to
- enable argument-dependent lookup.</para></notes>
- </function>
- </namespace>
- </header>
|