Imported Upstream version 1.57.0
[platform/upstream/boost.git] / libs / variant / doc / reference / multivisitor.xml
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 2013-2014, Antony Polukhin.
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/multivisitors.hpp">
11   <using-namespace name="boost"/>
12
13   <para>Provides declarations of <functionname>apply_visitor</functionname> for three or more
14     <code><classname>variant</classname></code> parameters.</para>
15
16     <macro name="BOOST_VARAINT_MAX_MULTIVIZITOR_PARAMS">
17       <purpose>
18         <simpara>Controls maximum amount of <code><classname>variant</classname></code>
19           parameters for multi visistors. </simpara>
20       </purpose>
21
22       <description>
23         <para><emphasis role="bold">Note</emphasis>: Default amount is 4. Define it 
24           to bigger value before including &lt;boost/variant/multivisitors.hpp&gt; to
25           increase maximum amount of <code><classname>variant</classname></code>
26           parameters for <functionname>apply_visitor</functionname>.</para>
27       </description>
28     </macro>
29
30   <namespace name="boost">
31     <overloaded-function name="apply_visitor /*three or more variant parameters*/">
32       <description>
33         <simpara>Allows compile-time checked type-safe application of the
34         given visitor to the content of the given variant, ensuring that all
35         types are handled by the visitor. See <functionname>apply_visitor</functionname>
36         for more information.</simpara>
37       </description>
38
39       <signature>
40         <template>
41           <template-type-parameter name="MultiVisitor"/>
42           <template-type-parameter name="Variant1"/>
43           <template-type-parameter name="Variant2"/>
44           <template-type-parameter name="Variant3"/>
45         </template>
46
47         <type>typename MultiVisitor::result_type</type>
48
49         <parameter name="visitor">
50           <paramtype>MultiVisitor &amp;</paramtype>
51         </parameter>
52         <parameter name="operand1">
53           <paramtype>Variant1 &amp;</paramtype>
54         </parameter>
55         <parameter name="operand2">
56           <paramtype>Variant2 &amp;</paramtype>
57         </parameter>
58         <parameter name="operand3">
59           <paramtype>Variant3 &amp;</paramtype>
60         </parameter>
61         <parameter name="other_operands">
62           <paramtype>...</paramtype>
63         </parameter>
64       </signature>
65
66       <signature>
67         <template>
68           <template-type-parameter name="MultiVisitor"/>
69           <template-type-parameter name="Variant1"/>
70           <template-type-parameter name="Variant2"/>
71           <template-type-parameter name="Variant3"/>
72         </template>
73
74         <type>typename MultiVisitor::result_type</type>
75
76         <parameter name="visitor">
77           <paramtype>const MultiVisitor &amp;</paramtype>
78         </parameter>
79         <parameter name="operand1">
80           <paramtype>Variant1 &amp;</paramtype>
81         </parameter>
82         <parameter name="operand2">
83           <paramtype>Variant2 &amp;</paramtype>
84         </parameter>
85         <parameter name="operand3">
86           <paramtype>Variant3 &amp;</paramtype>
87         </parameter>
88         <parameter name="other_operands">
89           <paramtype>...</paramtype>
90         </parameter>
91       </signature>
92     </overloaded-function>
93   </namespace>
94 </header>