ba5085fc2a
[SVN r51634]
67 lines
2.7 KiB
XML
67 lines
2.7 KiB
XML
<?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>
|