]> git.proxmox.com Git - ceph.git/blame - ceph/src/boost/libs/bind/doc/mem_fn/interface.qbk
add subtree-ish sources for 12.0.3
[ceph.git] / ceph / src / boost / libs / bind / doc / mem_fn / interface.qbk
CommitLineData
7c673cae
FG
1[/
2 / Copyright (c) 2001, 2002 Peter Dimov and Multi Media Ltd.
3 / Copyright (c) 2003-2005 Peter Dimov
4 /
5 / Distributed under the Boost Software License, Version 1.0. (See
6 / accompanying file LICENSE_1_0.txt or copy at
7 / http://www.boost.org/LICENSE_1_0.txt)
8 /]
9
10[section:interface Interface]
11
12[section:synopsys Synopsis]
13
14 namespace boost
15 {
16 template<class T> T * ``[link get_pointer_1 `get_pointer`]``(T * p);
17
18 template<class R, class T> ``/unspecified-1/`` ``[link mem_fn_1 `mem_fn`]``(R (T::*pmf) ());
19
20 template<class R, class T> ``/unspecified-2/`` ``[link mem_fn_2 `mem_fn`]``(R (T::*pmf) () const);
21
22 template<class R, class T> ``/unspecified-2-1/`` ``[link mem_fn_2_1 `mem_fn`]``(R T::*pm);
23
24 template<class R, class T, class A1> ``/unspecified-3/`` ``[link mem_fn_3 `mem_fn`]``(R (T::*pmf) (A1));
25
26 template<class R, class T, class A1> ``/unspecified-4/`` ``[link mem_fn_4 `mem_fn`]``(R (T::*pmf) (A1) const);
27
28 template<class R, class T, class A1, class A2> ``/unspecified-5/`` ``[link mem_fn_5 `mem_fn`]``(R (T::*pmf) (A1, A2));
29
30 template<class R, class T, class A1, class A2> ``/unspecified-6/`` ``[link mem_fn_6 `mem_fn`]``(R (T::*pmf) (A1, A2) const);
31
32 // implementation defined number of additional overloads for more arguments
33 }
34
35[endsect]
36
37[section Common requirements]
38
39All /unspecified-N/ types mentioned in the Synopsis are /CopyConstructible/
40and /Assignable/. Their copy constructors and assignment operators do not
41throw exceptions. /unspecified-N/`::result_type` is defined as the return type
42of the member function pointer passed as an argument to `mem_fn` (`R` in the
43Synopsis.) /unspecified-2-1/`::result_type` is defined as `R`.
44
45[endsect]
46
47[section `get_pointer`]
48
49[#get_pointer_1]
50
51 template<class T> T * get_pointer(T * p)
52
53* /Returns:/ `p`.
54
55* /Throws:/ Nothing.
56
57[endsect]
58
59[section `mem_fn`]
60
61[#mem_fn_1]
62
63 template<class R, class T> ``/unspecified-1/`` mem_fn(R (T::*pmf) ())
64
65* /Returns:/ a function object \u03DD such that the expression \u03DD`(t)` is
66equivalent to `(t.*pmf)()` when `t` is an l-value of type `T` or derived,
67`(get_pointer(t)->*pmf)()` otherwise.
68
69* /Throws:/ Nothing.
70
71[#mem_fn_2]
72
73 template<class R, class T> ``/unspecified-2/`` mem_fn(R (T::*pmf) () const)
74
75* /Returns:/ a function object \u03DD such that the expression \u03DD`(t)` is
76equivalent to `(t.*pmf)()` when `t` is of type `T` /[/`const`/]/ or derived,
77`(get_pointer(t)->*pmf)()` otherwise.
78
79* /Throws:/ Nothing.
80
81[#mem_fn_2_1]
82
83 template<class R, class T> ``/unspecified-2-1/`` mem_fn(R T::*pm)
84
85* /Returns:/ a function object \u03DD such that the expression \u03DD`(t)` is
86equivalent to `t.*pm` when `t` is of type `T` /[/`const`/]/ or derived,
87`get_pointer(t)->*pm` otherwise.
88
89* /Throws:/ Nothing.
90
91[#mem_fn_3]
92
93 template<class R, class T, class A1> ``/unspecified-3/`` mem_fn(R (T::*pmf) (A1))
94
95* /Returns:/ a function object \u03DD such that the expression \u03DD`(t, a1)`
96is equivalent to `(t.*pmf)(a1)` when `t` is an l-value of type `T` or derived,
97`(get_pointer(t)->*pmf)(a1)` otherwise.
98
99* /Throws:/ Nothing.
100
101[#mem_fn_4]
102
103 template<class R, class T, class A1> ``/unspecified-4/`` mem_fn(R (T::*pmf) (A1) const)
104
105* /Returns:/ a function object \u03DD such that the expression \u03DD`(t, a1)`
106is equivalent to `(t.*pmf)(a1)` when `t` is of type `T` /[/`const`/]/ or derived,
107`(get_pointer(t)->*pmf)(a1)` otherwise.
108
109* /Throws:/ Nothing.
110
111[#mem_fn_5]
112
113 template<class R, class T, class A1, class A2> ``/unspecified-5/`` mem_fn(R (T::*pmf) (A1, A2))
114
115* /Returns:/ a function object \u03DD such that the expression \u03DD`(t, a1, a2)`
116is equivalent to `(t.*pmf)(a1, a2)` when `t` is an l-value of type `T` or derived,
117`(get_pointer(t)->*pmf)(a1, a2)` otherwise.
118
119* /Throws:/ Nothing.
120
121[#mem_fn_6]
122
123 template<class R, class T, class A1, class A2> ``/unspecified-6/`` mem_fn(R (T::*pmf) (A1, A2) const)
124
125* /Returns:/ a function object \u03DD such that the expression \u03DD`(t, a1, a2)`
126is equivalent to `(t.*pmf)(a1, a2)` when `t` is of type `T` /[/`const`/]/ or derived,
127`(get_pointer(t)->*pmf)(a1, a2)` otherwise.
128
129* /Throws:/ Nothing.
130
131[endsect]
132
133[endsect]