• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1<?xml version="1.0" encoding="utf-8"?>
2<!DOCTYPE header PUBLIC "-//Boost//DTD BoostBook XML V1.0//EN"
3  "http://www.boost.org/tools/boostbook/dtd/boostbook.dtd">
4<!--
5    Copyright 2003, Eric Friedman, Itay Maman.
6
7    Distributed under the Boost Software License, Version 1.0. (See accompanying
8    file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
9-->
10<header name="boost/variant/visitor_ptr.hpp">
11  <namespace name="boost">
12
13    <class name="visitor_ptr_t">
14      <template>
15        <template-type-parameter name="T"/>
16        <template-type-parameter name="R"/>
17      </template>
18
19      <purpose>Adapts a function pointer for use as a static visitor.</purpose>
20      <description>
21        <simpara>Adapts the function given at construction for use as a
22        <link linkend="variant.concepts.static-visitor">static visitor</link>
23        of type <code>T</code> with result type <code>R</code>.</simpara>
24      </description>
25
26      <inherit access="public"><classname>static_visitor</classname>&lt;R&gt;</inherit>
27
28      <constructor specifiers="explicit">
29        <parameter>
30          <paramtype>R (*)(T)</paramtype>
31        </parameter>
32
33        <effects>
34          <simpara>Constructs the visitor with the given function.</simpara>
35        </effects>
36      </constructor>
37
38      <method-group name="static visitor interfaces">
39        <overloaded-method name="operator()">
40          <signature>
41            <type>R</type>
42
43            <parameter name="operand">
44              <paramtype><emphasis>unspecified-forwarding-type</emphasis></paramtype>
45            </parameter>
46          </signature>
47
48          <signature>
49            <template>
50              <template-type-parameter name="U"/>
51            </template>
52
53            <type>void</type>
54
55            <parameter>
56              <paramtype>const U&amp;</paramtype>
57            </parameter>
58          </signature>
59
60          <effects>
61            <simpara>If passed a value or reference of type
62              <code>T</code>, it invokes the function given at
63              construction, appropriately forwarding
64              <code>operand</code>.</simpara>
65          </effects>
66          <returns>Returns the result of the function invocation.</returns>
67
68          <throws id="visitor_ptr_t.visit.throws">
69            <simpara>The overload taking a value or reference of type
70              <code>T</code> throws if the invoked function throws.
71              The overload taking all other values <emphasis>always</emphasis>
72              throws <code><classname>bad_visit</classname></code>.</simpara>
73          </throws>
74        </overloaded-method>
75      </method-group>
76    </class>
77
78    <function name="visitor_ptr">
79      <purpose>
80        <simpara>Returns a visitor object that adapts function pointers for
81        use as a static visitor.</simpara>
82      </purpose>
83      <description>
84        <simpara>Constructs and returns a
85        <code><classname>visitor_ptr_t</classname></code> adaptor over the
86        given function.</simpara>
87      </description>
88
89      <template>
90        <template-type-parameter name="R"/>
91        <template-type-parameter name="T"/>
92      </template>
93
94      <type><classname>visitor_ptr_t</classname>&lt;T,R&gt;</type>
95
96      <parameter>
97        <paramtype>R (*)(T)</paramtype>
98      </parameter>
99
100      <returns>
101        <simpara>Returns a <code><classname>visitor_ptr_t</classname></code>
102          visitor object that, when applied, invokes the given
103          function.</simpara>
104      </returns>
105
106      <throws>
107        <simpara>Will not throw. (Note, however, that the returned
108        <classname alt="boost::visitor_ptr_t">visitor object</classname> may
109        throw when applied.)</simpara>
110      </throws>
111    </function>
112
113  </namespace>
114</header>
115