3 <meta http-equiv=
"Content-Type" content=
"text/html; charset=US-ASCII">
4 <title>Operator
</title>
5 <link rel=
"stylesheet" href=
"../../../../../../doc/src/boostbook.css" type=
"text/css">
6 <meta name=
"generator" content=
"DocBook XSL Stylesheets V1.75.2">
7 <link rel=
"home" href=
"../../index.html" title=
"Chapter 1. Phoenix 3.2.0">
8 <link rel=
"up" href=
"../modules.html" title=
"Modules">
9 <link rel=
"prev" href=
"function/adapting_functions.html" title=
"Adapting Functions">
10 <link rel=
"next" href=
"statement.html" title=
"Statement">
12 <body bgcolor=
"white" text=
"black" link=
"#0000FF" vlink=
"#840084" alink=
"#0000FF">
13 <table cellpadding=
"2" width=
"100%"><tr>
14 <td valign=
"top"><img alt=
"Boost C++ Libraries" width=
"277" height=
"86" src=
"../../../../../../boost.png"></td>
15 <td align=
"center"><a href=
"../../../../../../index.html">Home
</a></td>
16 <td align=
"center"><a href=
"../../../../../../libs/libraries.htm">Libraries
</a></td>
17 <td align=
"center"><a href=
"http://www.boost.org/users/people.html">People
</a></td>
18 <td align=
"center"><a href=
"http://www.boost.org/users/faq.html">FAQ
</a></td>
19 <td align=
"center"><a href=
"../../../../../../more/index.htm">More
</a></td>
22 <div class=
"spirit-nav">
23 <a accesskey=
"p" href=
"function/adapting_functions.html"><img src=
"../../../../../../doc/src/images/prev.png" alt=
"Prev"></a><a accesskey=
"u" href=
"../modules.html"><img src=
"../../../../../../doc/src/images/up.png" alt=
"Up"></a><a accesskey=
"h" href=
"../../index.html"><img src=
"../../../../../../doc/src/images/home.png" alt=
"Home"></a><a accesskey=
"n" href=
"statement.html"><img src=
"../../../../../../doc/src/images/next.png" alt=
"Next"></a>
26 <div class=
"titlepage"><div><div><h3 class=
"title">
27 <a name=
"phoenix.modules.operator"></a><a class=
"link" href=
"operator.html" title=
"Operator">Operator
</a>
28 </h3></div></div></div>
29 <pre class=
"programlisting"><span class=
"preprocessor">#include
</span> <span class=
"special"><</span><span class=
"identifier">boost
</span><span class=
"special">/
</span><span class=
"identifier">phoenix
</span><span class=
"special">/
</span><span class=
"keyword">operator
</span><span class=
"special">.
</span><span class=
"identifier">hpp
</span><span class=
"special">></span>
32 This facility provides a mechanism for lazily evaluating operators. Syntactically,
33 a lazy operator looks and feels like an ordinary C/C++ infix, prefix or postfix
34 operator. The operator application looks the same. However, unlike ordinary
35 operators, the actual operator execution is deferred. Samples:
37 <pre class=
"programlisting"><span class=
"identifier">arg1
</span> <span class=
"special">+
</span> <span class=
"identifier">arg2
</span>
38 <span class=
"number">1</span> <span class=
"special">+
</span> <span class=
"identifier">arg1
</span> <span class=
"special">*
</span> <span class=
"identifier">arg2
</span>
39 <span class=
"number">1</span> <span class=
"special">/
</span> <span class=
"special">-
</span><span class=
"identifier">arg1
</span>
40 <span class=
"identifier">arg1
</span> <span class=
"special"><</span> <span class=
"number">150</span>
43 We have seen the lazy operators in action (see
<a class=
"link" href=
"../starter_kit/lazy_operators.html" title=
"Lazy Operators">Quick
44 Start - Lazy Operators
</a>). Let's go back and examine them a little bit
47 <pre class=
"programlisting"><span class=
"identifier">std
</span><span class=
"special">::
</span><span class=
"identifier">find_if
</span><span class=
"special">(
</span><span class=
"identifier">c
</span><span class=
"special">.
</span><span class=
"identifier">begin
</span><span class=
"special">(),
</span> <span class=
"identifier">c
</span><span class=
"special">.
</span><span class=
"identifier">end
</span><span class=
"special">(),
</span> <span class=
"identifier">arg1
</span> <span class=
"special">%
</span> <span class=
"number">2</span> <span class=
"special">==
</span> <span class=
"number">1</span><span class=
"special">)
</span>
50 Through operator overloading, the expression
<code class=
"computeroutput"><span class=
"identifier">arg1
</span>
51 <span class=
"special">%
</span> <span class=
"number">2</span> <span class=
"special">==
</span> <span class=
"number">1</span></code> actually
52 generates an actor. This actor object is passed on to STL's
<code class=
"computeroutput"><span class=
"identifier">find_if
</span></code> function. From the viewpoint of
53 STL, the expression is simply a function object expecting a single argument
54 of the containers value_type. For each element in
<code class=
"computeroutput"><span class=
"identifier">c
</span></code>,
55 the element is passed on as an argument
<code class=
"computeroutput"><span class=
"identifier">arg1
</span></code>
56 to the actor (function object). The actor checks if this is an odd value
57 based on the expression
<code class=
"computeroutput"><span class=
"identifier">arg1
</span> <span class=
"special">%
</span> <span class=
"number">2</span> <span class=
"special">==
</span>
58 <span class=
"number">1</span></code> where arg1 is replaced by the container's
62 Like lazy functions (see
<a class=
"link" href=
"function.html" title=
"Function">Function
</a>),
63 lazy operators are not immediately executed when invoked. Instead, an actor
64 (see
<a class=
"link" href=
"../actor.html" title=
"Actor">Actor
</a>) object is created and returned
65 to the caller. Example:
67 <pre class=
"programlisting"><span class=
"special">(
</span><span class=
"identifier">arg1
</span> <span class=
"special">+
</span> <span class=
"identifier">arg2
</span><span class=
"special">)
</span> <span class=
"special">*
</span> <span class=
"identifier">arg3
</span>
70 does nothing more than return an actor. A second function call will evaluate
71 the actual operators. Example:
73 <pre class=
"programlisting"><span class=
"identifier">std
</span><span class=
"special">::
</span><span class=
"identifier">cout
</span> <span class=
"special"><<</span> <span class=
"special">((
</span><span class=
"identifier">arg1
</span> <span class=
"special">+
</span> <span class=
"identifier">arg2
</span><span class=
"special">)
</span> <span class=
"special">*
</span> <span class=
"identifier">arg3
</span><span class=
"special">)(
</span><span class=
"number">4</span><span class=
"special">,
</span> <span class=
"number">5</span><span class=
"special">,
</span> <span class=
"number">6</span><span class=
"special">);
</span>
79 Operator expressions are lazily evaluated following four simple rules:
81 <div class=
"orderedlist"><ol class=
"orderedlist" type=
"1">
83 A binary operator, except
<code class=
"computeroutput"><span class=
"special">-
>*
</span></code>
84 will be lazily evaluated when
<span class=
"emphasis"><em>at least
</em></span> one of its
85 operands is an actor object (see
<a class=
"link" href=
"../actor.html" title=
"Actor">Actor
</a>).
88 Unary operators are lazily evaluated if their argument is an actor object.
91 Operator
<code class=
"computeroutput"><span class=
"special">-
>*
</span></code> is lazily
92 evaluated if the left hand argument is an actor object.
95 The result of a lazy operator is an actor object that can in turn allow
96 the applications of rules
1,
2 and
3.
100 For example, to check the following expression is lazily evaluated:
102 <pre class=
"programlisting"><span class=
"special">-(
</span><span class=
"identifier">arg1
</span> <span class=
"special">+
</span> <span class=
"number">3</span> <span class=
"special">+
</span> <span class=
"number">6</span><span class=
"special">)
</span>
104 <div class=
"orderedlist"><ol class=
"orderedlist" type=
"1">
105 <li class=
"listitem">
106 Following rule
1,
<code class=
"computeroutput"><span class=
"identifier">arg1
</span> <span class=
"special">+
</span> <span class=
"number">3</span></code> is
107 lazily evaluated since
<code class=
"computeroutput"><span class=
"identifier">arg1
</span></code>
108 is an actor (see
<a class=
"link" href=
"core/arguments.html" title=
"Arguments">Arguments
</a>).
110 <li class=
"listitem">
111 The result of this
<code class=
"computeroutput"><span class=
"identifier">arg1
</span> <span class=
"special">+
</span> <span class=
"number">3</span></code> expression
112 is an actor object, following rule
4.
114 <li class=
"listitem">
115 Continuing,
<code class=
"computeroutput"><span class=
"identifier">arg1
</span> <span class=
"special">+
</span>
116 <span class=
"number">3</span> <span class=
"special">+
</span> <span class=
"number">6</span></code> is again lazily evaluated. Rule
2.
118 <li class=
"listitem">
119 By rule
4 again, the result of
<code class=
"computeroutput"><span class=
"identifier">arg1
</span>
120 <span class=
"special">+
</span> <span class=
"number">3</span> <span class=
"special">+
</span> <span class=
"number">6</span></code> is
123 <li class=
"listitem">
124 As
<code class=
"computeroutput"><span class=
"identifier">arg1
</span> <span class=
"special">+
</span>
125 <span class=
"number">3</span> <span class=
"special">+
</span> <span class=
"number">6</span></code> is an actor,
<code class=
"computeroutput"><span class=
"special">-(
</span><span class=
"identifier">arg1
</span> <span class=
"special">+
</span> <span class=
"number">3</span> <span class=
"special">+
</span> <span class=
"number">6</span><span class=
"special">)
</span></code> is lazily evaluated. Rule
2.
129 Lazy-operator application is highly contagious. In most cases, a single
130 <code class=
"computeroutput"><span class=
"identifier">argN
</span></code> actor infects all its
131 immediate neighbors within a group (first level or parenthesized expression).
134 Note that at least one operand of any operator must be a valid actor for
135 lazy evaluation to take effect. To force lazy evaluation of an ordinary expression,
136 we can use
<code class=
"computeroutput"><span class=
"identifier">ref
</span><span class=
"special">(
</span><span class=
"identifier">x
</span><span class=
"special">)
</span></code>,
<code class=
"computeroutput"><span class=
"identifier">val
</span><span class=
"special">(
</span><span class=
"identifier">x
</span><span class=
"special">)
</span></code> or
<code class=
"computeroutput"><span class=
"identifier">cref
</span><span class=
"special">(
</span><span class=
"identifier">x
</span><span class=
"special">)
</span></code>
137 to transform an operand into a valid actor object (see
<a class=
"link" href=
"core.html" title=
"Core">Core
</a>).
140 <pre class=
"programlisting"><span class=
"number">1</span> <span class=
"special"><<</span> <span class=
"number">3</span><span class=
"special">;
</span> <span class=
"comment">// Immediately evaluated
</span>
141 <span class=
"identifier">val
</span><span class=
"special">(
</span><span class=
"number">1</span><span class=
"special">)
</span> <span class=
"special"><<</span> <span class=
"number">3</span><span class=
"special">;
</span> <span class=
"comment">// Lazily evaluated
</span>
144 <a name=
"phoenix.modules.operator.h0"></a>
145 <span><a name=
"phoenix.modules.operator.supported_operators"></a></span><a class=
"link" href=
"operator.html#phoenix.modules.operator.supported_operators">Supported
149 <a name=
"phoenix.modules.operator.h1"></a>
150 <span><a name=
"phoenix.modules.operator.unary_operators"></a></span><a class=
"link" href=
"operator.html#phoenix.modules.operator.unary_operators">Unary
153 <pre class=
"programlisting"><span class=
"identifier">prefix
</span><span class=
"special">:
</span> <span class=
"special">~,
</span> <span class=
"special">!,
</span> <span class=
"special">-,
</span> <span class=
"special">+,
</span> <span class=
"special">++,
</span> <span class=
"special">--,
</span> <span class=
"special">&</span> <span class=
"special">(
</span><span class=
"identifier">reference
</span><span class=
"special">),
</span> <span class=
"special">*
</span> <span class=
"special">(
</span><span class=
"identifier">dereference
</span><span class=
"special">)
</span>
154 <span class=
"identifier">postfix
</span><span class=
"special">:
</span> <span class=
"special">++,
</span> <span class=
"special">--
</span>
157 <a name=
"phoenix.modules.operator.h2"></a>
158 <span><a name=
"phoenix.modules.operator.binary_operators"></a></span><a class=
"link" href=
"operator.html#phoenix.modules.operator.binary_operators">Binary
161 <pre class=
"programlisting"><span class=
"special">=,
</span> <span class=
"special">[],
</span> <span class=
"special">+=,
</span> <span class=
"special">-=,
</span> <span class=
"special">*=,
</span> <span class=
"special">/=,
</span> <span class=
"special">%=,
</span> <span class=
"special">&=,
</span> <span class=
"special">|=,
</span> <span class=
"special">^=,
</span> <span class=
"special"><<=,
</span> <span class=
"special">>>=
</span>
162 <span class=
"special">+,
</span> <span class=
"special">-,
</span> <span class=
"special">*,
</span> <span class=
"special">/,
</span> <span class=
"special">%,
</span> <span class=
"special">&,
</span> <span class=
"special">|,
</span> <span class=
"special">^,
</span> <span class=
"special"><<,
</span> <span class=
"special">>></span>
163 <span class=
"special">==,
</span> <span class=
"special">!=,
</span> <span class=
"special"><,
</span> <span class=
"special">>,
</span> <span class=
"special"><=,
</span> <span class=
"special">>=
</span>
164 <span class=
"special">&&,
</span> <span class=
"special">||,
</span> <span class=
"special">-
>*
</span>
167 <a name=
"phoenix.modules.operator.h3"></a>
168 <span><a name=
"phoenix.modules.operator.ternary_operator"></a></span><a class=
"link" href=
"operator.html#phoenix.modules.operator.ternary_operator">Ternary
171 <pre class=
"programlisting"><span class=
"identifier">if_else
</span><span class=
"special">(
</span><span class=
"identifier">c
</span><span class=
"special">,
</span> <span class=
"identifier">a
</span><span class=
"special">,
</span> <span class=
"identifier">b
</span><span class=
"special">)
</span>
174 The ternary operator deserves special mention. Since C++ does not allow us
175 to overload the conditional expression:
<code class=
"computeroutput"><span class=
"identifier">c
</span>
176 <span class=
"special">?
</span> <span class=
"identifier">a
</span> <span class=
"special">:
</span> <span class=
"identifier">b
</span></code>, the
177 if_else pseudo function is provided for this purpose. The behavior is identical,
178 albeit in a lazy manner.
181 <a name=
"phoenix.modules.operator.h4"></a>
182 <span><a name=
"phoenix.modules.operator.member_pointer_operator"></a></span><a class=
"link" href=
"operator.html#phoenix.modules.operator.member_pointer_operator">Member
185 <pre class=
"programlisting"><span class=
"identifier">a
</span><span class=
"special">-
>*
</span><span class=
"identifier">member_object_pointer
</span>
186 <span class=
"identifier">a
</span><span class=
"special">-
>*
</span><span class=
"identifier">member_function_pointer
</span>
189 The left hand side of the member pointer operator must be an actor returning
190 a pointer type. The right hand side of the member pointer operator may be
191 either a pointer to member object or pointer to member function.
194 If the right hand side is a member object pointer, the result is an actor
195 which, when evaluated, returns a reference to that member. For example:
197 <pre class=
"programlisting"><span class=
"keyword">struct
</span> <span class=
"identifier">A
</span>
198 <span class=
"special">{
</span>
199 <span class=
"keyword">int
</span> <span class=
"identifier">member
</span><span class=
"special">;
</span>
200 <span class=
"special">};
</span>
202 <span class=
"identifier">A
</span><span class=
"special">*
</span> <span class=
"identifier">a
</span> <span class=
"special">=
</span> <span class=
"keyword">new
</span> <span class=
"identifier">A
</span><span class=
"special">;
</span>
203 <span class=
"special">...
</span>
205 <span class=
"special">(
</span><span class=
"identifier">arg1
</span><span class=
"special">-
>*
&</span><span class=
"identifier">A
</span><span class=
"special">::
</span><span class=
"identifier">member
</span><span class=
"special">)(
</span><span class=
"identifier">a
</span><span class=
"special">);
</span> <span class=
"comment">// returns member a-
>member
</span>
208 If the right hand side is a member function pointer, the result is an actor
209 which, when invoked, calls the specified member function. For example:
211 <pre class=
"programlisting"><span class=
"keyword">struct
</span> <span class=
"identifier">A
</span>
212 <span class=
"special">{
</span>
213 <span class=
"keyword">int
</span> <span class=
"identifier">func
</span><span class=
"special">(
</span><span class=
"keyword">int
</span><span class=
"special">);
</span>
214 <span class=
"special">};
</span>
216 <span class=
"identifier">A
</span><span class=
"special">*
</span> <span class=
"identifier">a
</span> <span class=
"special">=
</span> <span class=
"keyword">new
</span> <span class=
"identifier">A
</span><span class=
"special">;
</span>
217 <span class=
"keyword">int
</span> <span class=
"identifier">i
</span> <span class=
"special">=
</span> <span class=
"number">0</span><span class=
"special">;
</span>
219 <span class=
"special">(
</span><span class=
"identifier">arg1
</span><span class=
"special">-
>*
&</span><span class=
"identifier">A
</span><span class=
"special">::
</span><span class=
"identifier">func
</span><span class=
"special">)(
</span><span class=
"identifier">arg2
</span><span class=
"special">)(
</span><span class=
"identifier">a
</span><span class=
"special">,
</span> <span class=
"identifier">i
</span><span class=
"special">);
</span> <span class=
"comment">// returns a-
>func(i)
</span>
222 <a name=
"phoenix.modules.operator.h5"></a>
223 <span><a name=
"phoenix.modules.operator.include_files"></a></span><a class=
"link" href=
"operator.html#phoenix.modules.operator.include_files">Include
226 <div class=
"informaltable"><table class=
"table">
247 <code class=
"computeroutput"><span class=
"special">-
</span></code>,
<code class=
"computeroutput"><span class=
"special">+
</span></code>,
248 <code class=
"computeroutput"><span class=
"special">++
</span></code>,
<code class=
"computeroutput"><span class=
"special">--
</span></code>,
<code class=
"computeroutput"><span class=
"special">+=
</span></code>,
249 <code class=
"computeroutput"><span class=
"special">-=
</span></code>,
<code class=
"computeroutput"><span class=
"special">*=
</span></code>,
<code class=
"computeroutput"><span class=
"special">/=
</span></code>,
250 <code class=
"computeroutput"><span class=
"special">%=
</span></code>,
<code class=
"computeroutput"><span class=
"special">*
</span></code>,
<code class=
"computeroutput"><span class=
"special">/
</span></code>,
251 <code class=
"computeroutput"><span class=
"special">%
</span></code>
256 <code class=
"computeroutput"><span class=
"preprocessor">#include
</span> <span class=
"special"><</span><span class=
"identifier">boost
</span><span class=
"special">/
</span><span class=
"identifier">phoenix
</span><span class=
"special">/
</span><span class=
"keyword">operator
</span><span class=
"special">/
</span><span class=
"identifier">arithmetic
</span><span class=
"special">.
</span><span class=
"identifier">hpp
</span><span class=
"special">></span></code>
263 <code class=
"computeroutput"><span class=
"special">&=
</span></code>,
<code class=
"computeroutput"><span class=
"special">|=
</span></code>,
<code class=
"computeroutput"><span class=
"special">^=
</span></code>,
264 <code class=
"computeroutput"><span class=
"special"><<=
</span></code>,
<code class=
"computeroutput"><span class=
"special">>>=
</span></code>,
<code class=
"computeroutput"><span class=
"special">&</span></code>,
265 <code class=
"computeroutput"><span class=
"special">|
</span></code>,
<code class=
"computeroutput"><span class=
"special">^
</span></code>,
266 <code class=
"computeroutput"><span class=
"special"><<</span></code>,
<code class=
"computeroutput"><span class=
"special">>></span></code>
271 <code class=
"computeroutput"><span class=
"preprocessor">#include
</span> <span class=
"special"><</span><span class=
"identifier">boost
</span><span class=
"special">/
</span><span class=
"identifier">phoenix
</span><span class=
"special">/
</span><span class=
"keyword">operator
</span><span class=
"special">/
</span><span class=
"identifier">bitwise
</span><span class=
"special">.
</span><span class=
"identifier">hpp
</span><span class=
"special">></span></code>
278 <code class=
"computeroutput"><span class=
"special">==
</span></code>,
<code class=
"computeroutput"><span class=
"special">!=
</span></code>,
<code class=
"computeroutput"><span class=
"special"><</span></code>,
279 <code class=
"computeroutput"><span class=
"special"><=
</span></code>,
<code class=
"computeroutput"><span class=
"special">></span></code>,
<code class=
"computeroutput"><span class=
"special">>=
</span></code>
284 <code class=
"computeroutput"><span class=
"preprocessor">#include
</span> <span class=
"special"><</span><span class=
"identifier">boost
</span><span class=
"special">/
</span><span class=
"identifier">phoenix
</span><span class=
"special">/
</span><span class=
"keyword">operator
</span><span class=
"special">/
</span><span class=
"identifier">comparison
</span><span class=
"special">.
</span><span class=
"identifier">hpp
</span><span class=
"special">></span></code>
291 <code class=
"computeroutput"><span class=
"special"><<</span></code>,
<code class=
"computeroutput"><span class=
"special">>></span></code>
296 <code class=
"computeroutput"><span class=
"preprocessor">#include
</span> <span class=
"special"><</span><span class=
"identifier">boost
</span><span class=
"special">/
</span><span class=
"identifier">phoenix
</span><span class=
"special">/
</span><span class=
"keyword">operator
</span><span class=
"special">/
</span><span class=
"identifier">io
</span><span class=
"special">.
</span><span class=
"identifier">hpp
</span><span class=
"special">></span></code>
303 <code class=
"computeroutput"><span class=
"special">!
</span></code>,
&&,
<code class=
"computeroutput"><span class=
"special">||
</span></code>
308 <code class=
"computeroutput"><span class=
"preprocessor">#include
</span> <span class=
"special"><</span><span class=
"identifier">boost
</span><span class=
"special">/
</span><span class=
"identifier">phoenix
</span><span class=
"special">/
</span><span class=
"keyword">operator
</span><span class=
"special">/
</span><span class=
"identifier">logical
</span><span class=
"special">.
</span><span class=
"identifier">hpp
</span><span class=
"special">></span></code>
315 <code class=
"computeroutput"><span class=
"special">&</span><span class=
"identifier">x
</span></code>,
316 <code class=
"computeroutput"><span class=
"special">*
</span><span class=
"identifier">p
</span></code>,
317 <code class=
"computeroutput"><span class=
"special">=
</span></code>,
<code class=
"computeroutput"><span class=
"special">[]
</span></code>
322 <code class=
"computeroutput"><span class=
"preprocessor">#include
</span> <span class=
"special"><</span><span class=
"identifier">boost
</span><span class=
"special">/
</span><span class=
"identifier">phoenix
</span><span class=
"special">/
</span><span class=
"keyword">operator
</span><span class=
"special">/
</span><span class=
"identifier">self
</span><span class=
"special">.
</span><span class=
"identifier">hpp
</span><span class=
"special">></span></code>
329 <code class=
"computeroutput"><span class=
"identifier">if_else
</span><span class=
"special">(
</span><span class=
"identifier">c
</span><span class=
"special">,
</span>
330 <span class=
"identifier">a
</span><span class=
"special">,
</span>
331 <span class=
"identifier">b
</span><span class=
"special">)
</span></code>
336 <code class=
"computeroutput"><span class=
"preprocessor">#include
</span> <span class=
"special"><</span><span class=
"identifier">boost
</span><span class=
"special">/
</span><span class=
"identifier">phoenix
</span><span class=
"special">/
</span><span class=
"keyword">operator
</span><span class=
"special">/
</span><span class=
"identifier">if_else
</span><span class=
"special">.
</span><span class=
"identifier">hpp
</span><span class=
"special">></span></code>
343 <code class=
"computeroutput"><span class=
"special">-
>*
</span></code>
348 <code class=
"computeroutput"><span class=
"preprocessor">#include
</span> <span class=
"special"><</span><span class=
"identifier">boost
</span><span class=
"special">/
</span><span class=
"identifier">phoenix
</span><span class=
"special">/
</span><span class=
"keyword">operator
</span><span class=
"special">/
</span><span class=
"identifier">member
</span><span class=
"special">.
</span><span class=
"identifier">hpp
</span><span class=
"special">></span></code>
355 <table xmlns:
rev=
"http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width=
"100%"><tr>
356 <td align=
"left"></td>
357 <td align=
"right"><div class=
"copyright-footer">Copyright
© 2002-
2005,
2010,
2014,
2015 Joel de Guzman, Dan Marsden, Thomas
358 Heller, John Fletcher
<p>
359 Distributed under the Boost Software License, Version
1.0. (See accompanying
360 file LICENSE_1_0.txt or copy at
<a href=
"http://www.boost.org/LICENSE_1_0.txt" target=
"_top">http://www.boost.org/LICENSE_1_0.txt
</a>)
365 <div class=
"spirit-nav">
366 <a accesskey=
"p" href=
"function/adapting_functions.html"><img src=
"../../../../../../doc/src/images/prev.png" alt=
"Prev"></a><a accesskey=
"u" href=
"../modules.html"><img src=
"../../../../../../doc/src/images/up.png" alt=
"Up"></a><a accesskey=
"h" href=
"../../index.html"><img src=
"../../../../../../doc/src/images/home.png" alt=
"Home"></a><a accesskey=
"n" href=
"statement.html"><img src=
"../../../../../../doc/src/images/next.png" alt=
"Next"></a>