1 <?xml version=
"1.0" encoding=
"utf-8"?>
3 Copyright 2012 Eric Niebler
5 Distributed under the Boost
6 Software License, Version 1.0. (See accompanying
7 file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
9 <header name=
"boost/proto/functional/std/utility.hpp">
10 <para>Defines Proto callables
<computeroutput><classname>boost::proto::functional::make_pair
</classname></computeroutput>,
11 <computeroutput><classname>boost::proto::functional::first
</classname></computeroutput> and
12 <computeroutput><classname>boost::proto::functional::second
</classname></computeroutput>.
</para>
14 <namespace name=
"boost">
15 <namespace name=
"proto">
16 <namespace name=
"functional">
18 <!-- proto::functional::make_pair -->
19 <struct name=
"make_pair">
20 <purpose>A
<conceptname>PolymorphicFunctionObject
</conceptname> type that invokes
21 <computeroutput>std::make_pair()
</computeroutput> on its arguments.
</purpose>
24 A
<conceptname>PolymorphicFunctionObject
</conceptname> type that invokes
25 <computeroutput>std::make_pair()
</computeroutput> on its arguments.
</para>
28 <type><classname>proto::callable
</classname></type>
30 <struct-specialization name=
"result">
32 <template-type-parameter name=
"This"/>
33 <template-type-parameter name=
"First"/>
34 <template-type-parameter name=
"Second"/>
37 <template-arg>This(First, Second)
</template-arg>
41 typename boost::remove_const
<typename boost::remove_reference
<First
>::type
>::type
42 , typename boost::remove_const
<typename boost::remove_reference
<Second
>::type
>::type
45 </struct-specialization>
46 <method-group name=
"public member functions">
47 <method name=
"operator()" cv=
"const">
48 <type>typename std::pair
< First, Second
></type>
50 <template-type-parameter name=
"First"/>
51 <template-type-parameter name=
"Second"/>
53 <parameter name=
"first">
54 <paramtype>First const
&</paramtype>
56 <parameter name=
"second">
57 <paramtype>Second const
&</paramtype>
60 <para><computeroutput>std::make_pair(first, second)
</computeroutput></para>
66 <!-- proto::functional::first -->
69 A
<conceptname>PolymorphicFunctionObject
</conceptname> type that returns
70 the first element of a
<computeroutput>std::pair
<></computeroutput>.
74 A
<conceptname>PolymorphicFunctionObject
</conceptname> type that returns
75 the first element of a
<computeroutput>std::pair
<></computeroutput>.
</para>
77 <inherit><type><classname>proto::callable
</classname></type>
79 <struct-specialization name=
"result">
81 <template-type-parameter name=
"This"/>
82 <template-type-parameter name=
"Pair"/>
85 <template-arg>This(Pair)
</template-arg>
88 <type>typename Pair::first_type
</type>
90 </struct-specialization>
91 <struct-specialization name=
"result">
93 <template-type-parameter name=
"This"/>
94 <template-type-parameter name=
"Pair"/>
97 <template-arg>This(Pair
&)
</template-arg>
100 <type>typename Pair::first_type
&</type>
102 </struct-specialization>
103 <struct-specialization name=
"result">
105 <template-type-parameter name=
"This"/>
106 <template-type-parameter name=
"Pair"/>
109 <template-arg>This(Pair const
&)
</template-arg>
111 <typedef name=
"type">
112 <type>typename Pair::first_type const
&</type>
114 </struct-specialization>
115 <method-group name=
"public member functions">
116 <method name=
"operator()" cv=
"const">
117 <type>typename Pair::first_type
&</type>
119 <template-type-parameter name=
"Pair"/>
121 <parameter name=
"pair">
122 <paramtype>Pair
&</paramtype>
126 <computeroutput>pair.first
</computeroutput>
130 <method name=
"operator()" cv=
"const">
131 <type>typename Pair::first_type const
&</type>
133 <template-type-parameter name=
"Pair"/>
135 <parameter name=
"pair">
136 <paramtype>Pair const
&</paramtype>
140 <computeroutput>pair.first
</computeroutput>
147 <!-- proto::functional::second -->
148 <struct name=
"second">
150 A
<conceptname>PolymorphicFunctionObject
</conceptname> type that returns
151 the second element of a
<computeroutput>std::pair
<></computeroutput>.
155 A
<conceptname>PolymorphicFunctionObject
</conceptname> type that returns
156 the second element of a
<computeroutput>std::pair
<></computeroutput>.
159 <inherit><type><classname>proto::callable
</classname></type></inherit>
160 <struct-specialization name=
"result">
162 <template-type-parameter name=
"This"/>
163 <template-type-parameter name=
"Pair"/>
166 <template-arg>This(Pair)
</template-arg>
168 <typedef name=
"type">
169 <type>typename Pair::second_type
</type>
171 </struct-specialization>
172 <struct-specialization name=
"result">
174 <template-type-parameter name=
"This"/>
175 <template-type-parameter name=
"Pair"/>
178 <template-arg>This(Pair
&)
</template-arg>
180 <typedef name=
"type">
181 <type>typename Pair::second_type
&</type>
183 </struct-specialization>
184 <struct-specialization name=
"result">
186 <template-type-parameter name=
"This"/>
187 <template-type-parameter name=
"Pair"/>
190 <template-arg>This(Pair const
&)
</template-arg>
192 <typedef name=
"type">
193 <type>typename Pair::second_type const
&</type>
195 </struct-specialization>
196 <method-group name=
"public member functions">
197 <method name=
"operator()" cv=
"const">
198 <type>typename Pair::second_type
&</type>
200 <template-type-parameter name=
"Pair"/>
202 <parameter name=
"pair">
203 <paramtype>Pair
&</paramtype>
207 <computeroutput>pair.second
</computeroutput>
211 <method name=
"operator()" cv=
"const">
212 <type>typename Pair::second_type const
&</type>
214 <template-type-parameter name=
"Pair"/>
216 <parameter name=
"pair">
217 <paramtype>Pair const
&</paramtype>
221 <computeroutput>pair.second
</computeroutput>