1 // xxrefwrap1 TR1 internal header
2 // NOTE: no include guard
3
4     // TEMPLATE CLASS _Refwrap_impl FOR FUNCTIONS
5 template<class _Rx
6     _C_CLASS_ARG0>
7     struct _Refwrap_impl<_Rx(_ARG0_ARG1)>
8         : _Call_wrapper<_Callable_fun<
9             _Rx(*)(_ARG0_ARG1), false> >
10
11  #if _NARGS == 1
12             , unary_function<_Arg0, _Rx>
13
14  #elif _NARGS == 2
15             , binary_function<_Arg0, _Arg1, _Rx>
16  #endif /* _NARGS */
17
18     {    // implement for pointer to function
19     typedef _Rx(* _Fty)(_ARG0_ARG1);
Lines 20 ... 29 are skipped.
30     _C_CLASS_ARG0>
31     struct _Refwrap_impl<_Rx(*)(_ARG0_ARG1)>
32         : _Call_wrapper<_Callable_fun<
33             _Rx(*)(_ARG0_ARG1), true> >
34
35  #if _NARGS == 1
36             , unary_function<_Arg0, _Rx>
37
38  #elif _NARGS == 2
39             , binary_function<_Arg0, _Arg1, _Rx>
40  #endif /* _NARGS */
41
42     {    // implement for pointer to function
43     typedef _Rx(* _Fty)(_ARG0_ARG1);
44     typedef _Rx result_type;
45
46     _Refwrap_impl(_Fty& _Val)
47         : _Call_wrapper<_Callable_fun<_Fty, true> >(_Val)
48         {    // construct
49         }
50     };
51
52 template<class _Rx
53     _C_CLASS_ARG0>
54     struct _Refwrap_impl<_Rx(*const)(_ARG0_ARG1)>
55         : _Call_wrapper<_Callable_fun<
56             _Rx(*const)(_ARG0_ARG1), true> >
57
58  #if _NARGS == 1
59             , unary_function<_Arg0, _Rx>
60
61  #elif _NARGS == 2
62             , binary_function<_Arg0, _Arg1, _Rx>
63  #endif /* _NARGS */
64
65     {    // implement for pointer to function
66     typedef _Rx(*const _Fty)(_ARG0_ARG1);
67     typedef _Rx result_type;
68
69     _Refwrap_impl(_Fty& _Val)
70         : _Call_wrapper<_Callable_fun<_Fty, true> >(_Val)
71         {    // construct
72         }
73     };
74
75     // TEMPLATE CLASS _Refwrap_impl FOR POINTERS TO MEMBER FUNCTIONS
76
77  #if _NARGS != 0
78 template<class _Rx
79     _C_CLASS_ARG0>
80     struct _Refwrap_impl<_Rx(_Arg0::*const)(_ARG1_ARG2)>
81         : _Call_wrapper<_Callable_pmf<
82             _Rx(_Arg0::*const)(_ARG1_ARG2), _Arg0, true> >
83
84   #if _NARGS == 1
85             , unary_function<_Arg0 *const, _Rx>
86
87   #elif _NARGS == 2
88             , binary_function<_Arg0 *const, _Arg1, _Rx>
89   #endif /* _NARGS */
90
91     {    // implement for pointer to member function
92     typedef _Rx(_Arg0::*const _Fty)(_ARG1_ARG2);
93     typedef _Rx result_type;
94
95     _Refwrap_impl(_Fty& _Val)
96         : _Call_wrapper<_Callable_pmf<_Fty, _Arg0, true> >(_Val)
97         {    // construct
98         }
99     };
100
101 template<class _Rx
102     _C_CLASS_ARG0>
103     struct _Refwrap_impl<_Rx(_Arg0::*const)(_ARG1_ARG2) const>
104         : _Call_wrapper<_Callable_pmf<
105             _Rx(_Arg0::*const)(_ARG1_ARG2) const, _Arg0, true> >
106
107   #if _NARGS == 1
108             , unary_function<_Arg0 *const, _Rx>
109
110   #elif _NARGS == 2
111             , binary_function<_Arg0 *const, _Arg1, _Rx>
112   #endif /* _NARGS */
113
114     {    // implement for pointer to const member function
115     typedef _Rx(_Arg0::*const _Fty)(_ARG1_ARG2) const;
116     typedef _Rx result_type;
117
118     _Refwrap_impl(_Fty& _Val)
119         : _Call_wrapper<_Callable_pmf<_Fty, _Arg0, true> >(_Val)
120         {    // construct
121         }
122     };
123
124 template<class _Rx
125     _C_CLASS_ARG0>
126     struct _Refwrap_impl<_Rx(_Arg0::*const)(_ARG1_ARG2) volatile>
127         : _Call_wrapper<_Callable_pmf<
128             _Rx(_Arg0::*const)(_ARG1_ARG2) volatile, _Arg0, true> >
129
130   #if _NARGS == 1
131             , unary_function<_Arg0 *const, _Rx>
132
133   #elif _NARGS == 2
134             , binary_function<_Arg0 *const, _Arg1, _Rx>
135   #endif /* _NARGS */
136
137     {    // implement for pointer to volatile member function
138     typedef _Rx(_Arg0::*const _Fty)(_ARG1_ARG2) volatile;
139     typedef _Rx result_type;
140
141     _Refwrap_impl(_Fty& _Val)
142         : _Call_wrapper<_Callable_pmf<_Fty, _Arg0, true> >(_Val)
143         {    // construct
144         }
145     };
146
147 template<class _Rx
148     _C_CLASS_ARG0>
149     struct _Refwrap_impl<_Rx(_Arg0::*const)(_ARG1_ARG2) const volatile>
150         : _Call_wrapper<_Callable_pmf<
151             _Rx(_Arg0::*const)(_ARG1_ARG2) const volatile, _Arg0, true> >
152
153   #if _NARGS == 1
154             , unary_function<_Arg0 *const, _Rx>
155
156   #elif _NARGS == 2
157             , binary_function<_Arg0 *const, _Arg1, _Rx>
158   #endif /* _NARGS */
159
160     {    // implement for pointer to const volatile member function
161     typedef _Rx(_Arg0::*const _Fty)(_ARG1_ARG2) const volatile;
162     typedef _Rx result_type;
163
164     _Refwrap_impl(_Fty& _Val)
165         : _Call_wrapper<_Callable_pmf<_Fty, _Arg0, true> >(_Val)
166         {    // construct
167         }
168     };
169
170 template<class _Rx
171     _C_CLASS_ARG0>
172     struct _Refwrap_impl<_Rx(_Arg0::*)(_ARG1_ARG2)>
173         : _Call_wrapper<_Callable_pmf<
174             _Rx(_Arg0::*)(_ARG1_ARG2), _Arg0, true> >
175
176   #if _NARGS == 1
177             , unary_function<_Arg0 *const, _Rx>
178
179   #elif _NARGS == 2
180             , binary_function<_Arg0 *const, _Arg1, _Rx>
181   #endif /* _NARGS */
182
183     {    // implement for pointer to member function
184     typedef _Rx(_Arg0::* _Fty)(_ARG1_ARG2);
185     typedef _Rx result_type;
186
187     _Refwrap_impl(_Fty& _Val)
188         : _Call_wrapper<_Callable_pmf<_Fty, _Arg0, true> >(_Val)
189         {    // construct
190         }
191     };
192
193 template<class _Rx
194     _C_CLASS_ARG0>
195     struct _Refwrap_impl<_Rx(_Arg0::*)(_ARG1_ARG2) const>
196         : _Call_wrapper<_Callable_pmf<
197             _Rx(_Arg0::*)(_ARG1_ARG2) const, _Arg0, true> >
198
199   #if _NARGS == 1
200             , unary_function<_Arg0 *const, _Rx>
201
202   #elif _NARGS == 2
203             , binary_function<_Arg0 *const, _Arg1, _Rx>
204   #endif /* _NARGS */
205
206     {    // implement for pointer to const member function
207     typedef _Rx(_Arg0::* _Fty)(_ARG1_ARG2) const;
208     typedef _Rx result_type;
209
210     _Refwrap_impl(_Fty& _Val)
211         : _Call_wrapper<_Callable_pmf<_Fty, _Arg0, true> >(_Val)
212         {    // construct
213         }
214     };
215
216 template<class _Rx
217     _C_CLASS_ARG0>
218     struct _Refwrap_impl<_Rx(_Arg0::*)(_ARG1_ARG2) volatile>
219         : _Call_wrapper<_Callable_pmf<
220             _Rx(_Arg0::*)(_ARG1_ARG2) volatile, _Arg0, true> >
221
222   #if _NARGS == 1
223             , unary_function<_Arg0 *const, _Rx>
224
225   #elif _NARGS == 2
226             , binary_function<_Arg0 *const, _Arg1, _Rx>
227   #endif /* _NARGS */
228
229     {    // implement for pointer to volatile member function
230     typedef _Rx(_Arg0::* _Fty)(_ARG1_ARG2) volatile;
231     typedef _Rx result_type;
232
233     _Refwrap_impl(_Fty& _Val)
234         : _Call_wrapper<_Callable_pmf<_Fty, _Arg0, true> >(_Val)
235         {    // construct
236         }
237     };
238
239 template<class _Rx
240     _C_CLASS_ARG0>
241     struct _Refwrap_impl<_Rx(_Arg0::*)(_ARG1_ARG2) const volatile>
242         : _Call_wrapper<_Callable_pmf<
243             _Rx(_Arg0::*)(_ARG1_ARG2) const volatile, _Arg0, true> >
244
245   #if _NARGS == 1
246             , unary_function<_Arg0 *const, _Rx>
247
248   #elif _NARGS == 2
249             , binary_function<_Arg0 *const, _Arg1, _Rx>
250   #endif /* _NARGS */
251
252     {    // implement for pointer to const volatile member function
253     typedef _Rx(_Arg0::* _Fty)(_ARG1_ARG2) const volatile;
254     typedef _Rx result_type;
255
256     _Refwrap_impl(_Fty& _Val)
257         : _Call_wrapper<_Callable_pmf<_Fty, _Arg0, true> >(_Val)
258         {    // construct
259         }
260     };
261  #endif /* _NARGS != 0 */
262
263 /*
264  * Copyright (c) 1992-2008 by P.J. Plauger.  ALL RIGHTS RESERVED.
265  * Consult your license regarding permissions and restrictions.
266 V5.05:0009 */
267