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-2020 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. Not used when <code>std::tuple</code> is available and 20 <code><macroname>BOOST_VARIANT_DO_NOT_USE_VARIADIC_TEMPLATES</macroname></code> 21 is not defined.</simpara> 22 </purpose> 23 24 <description> 25 <para><emphasis role="bold">Note</emphasis>: Default amount is 4. Define it 26 to bigger value before including <boost/variant/multivisitors.hpp> to 27 increase maximum amount of <code><classname>variant</classname></code> 28 parameters for <functionname>apply_visitor</functionname>.</para> 29 </description> 30 </macro> 31 32 <namespace name="boost"> 33 <overloaded-function name="apply_visitor /*three or more variant parameters*/"> 34 <description> 35 <simpara>Allows compile-time checked type-safe application of the 36 given visitor to the content of the given variant, ensuring that all 37 types are handled by the visitor. See <functionname>apply_visitor</functionname> 38 for more information.</simpara> 39 </description> 40 41 <signature> 42 <template> 43 <template-type-parameter name="MultiVisitor"/> 44 <template-type-parameter name="Variant1"/> 45 <template-type-parameter name="Variant2"/> 46 <template-type-parameter name="Variant3"/> 47 </template> 48 49 <type>typename MultiVisitor::result_type OR decltype(auto)</type> 50 51 <parameter name="visitor"> 52 <paramtype>MultiVisitor &</paramtype> 53 </parameter> 54 <parameter name="operand1"> 55 <paramtype>Variant1&&</paramtype> 56 </parameter> 57 <parameter name="operand2"> 58 <paramtype>Variant2&&</paramtype> 59 </parameter> 60 <parameter name="operand3"> 61 <paramtype>Variant3&&</paramtype> 62 </parameter> 63 <parameter name="other_operands"> 64 <paramtype>...</paramtype> 65 </parameter> 66 </signature> 67 68 <signature> 69 <template> 70 <template-type-parameter name="MultiVisitor"/> 71 <template-type-parameter name="Variant1"/> 72 <template-type-parameter name="Variant2"/> 73 <template-type-parameter name="Variant3"/> 74 </template> 75 76 <type>typename MultiVisitor::result_type OR decltype(auto)</type> 77 78 <parameter name="visitor"> 79 <paramtype>const MultiVisitor &</paramtype> 80 </parameter> 81 <parameter name="operand1"> 82 <paramtype>Variant1&&</paramtype> 83 </parameter> 84 <parameter name="operand2"> 85 <paramtype>Variant2&&</paramtype> 86 </parameter> 87 <parameter name="operand3"> 88 <paramtype>Variant3&&</paramtype> 89 </parameter> 90 <parameter name="other_operands"> 91 <paramtype>...</paramtype> 92 </parameter> 93 </signature> 94 </overloaded-function> 95 </namespace> 96</header> 97