[/ / Copyright (c) 2001, 2002 Peter Dimov and Multi Media Ltd. / Copyright (c) 2003-2008 Peter Dimov / / Distributed under the Boost Software License, Version 1.0. (See / accompanying file LICENSE_1_0.txt or copy at / http://www.boost.org/LICENSE_1_0.txt) /] [section:interface Interface] [section:synopsys Synopsis] namespace boost { // no arguments template ``/unspecified-1/`` ``[link bind_1 `bind`]``(F f); template ``/unspecified-1-1/`` ``[link bind_1_1 `bind`]``(F f); template ``/unspecified-2/`` ``[link bind_2 `bind`]``(R (*f) ()); // one argument template ``/unspecified-3/`` ``[link bind_3 `bind`]``(F f, A1 a1); template ``/unspecified-3-1/`` ``[link bind_3_1 `bind`]``(F f, A1 a1); template ``/unspecified-4/`` ``[link bind_4 `bind`]``(R (*f) (B1), A1 a1); template ``/unspecified-5/`` ``[link bind_5 `bind`]``(R (T::*f) (), A1 a1); template ``/unspecified-6/`` ``[link bind_6 `bind`]``(R (T::*f) () const, A1 a1); template ``/unspecified-6-1/`` ``[link bind_6_1 `bind`]``(R T::*f, A1 a1); // two arguments template ``/unspecified-7/`` ``[link bind_7 `bind`]``(F f, A1 a1, A2 a2); template ``/unspecified-7-1/`` ``[link bind_7_1 `bind`]``(F f, A1 a1, A2 a2); template ``/unspecified-8/`` ``[link bind_8 `bind`]``(R (*f) (B1, B2), A1 a1, A2 a2); template ``/unspecified-9/`` ``[link bind_9 `bind`]``(R (T::*f) (B1), A1 a1, A2 a2); template ``/unspecified-10/`` ``[link bind_10 `bind`]``(R (T::*f) (B1) const, A1 a1, A2 a2); // implementation defined number of additional overloads for more arguments } namespace { ``/unspecified-placeholder-type-1/`` _1; ``/unspecified-placeholder-type-2/`` _2; ``/unspecified-placeholder-type-3/`` _3; // implementation defined number of additional placeholder definitions } [endsect] [section Common requirements] All /unspecified-N/ types returned by `bind` are /CopyConstructible/. /unspecified-N/`::result_type` is defined as the return type of /unspecified-N/`::operator()`. All /unspecified-placeholder-N/ types are /CopyConstructible/. Their copy constructors do not throw exceptions. [endsect] [section Common definitions] The function \u03BC`(x, v1, v2, ..., vm)`, where `m` is a nonnegative integer, is defined as: * `x.get()`, when `x` is of type [@boost:/libs/core/doc/html/core/ref.html `boost::reference_wrapper`]`` for some type `T`; * `vk`, when `x` is (a copy of) the placeholder /_k/ for some positive integer /k/; * `x(v1, v2, ..., vm)` when `x` is (a copy of) a function object returned by `bind`; * `x` otherwise. [endsect] [section `bind`] [#bind_1] template ``/unspecified-1/`` bind(F f) * /Returns:/ A function object \u03BB such that the expression \u03BB`(v1, v2, ..., vm)` is equivalent to `f()`, implicitly converted to `R`. * /Throws:/ Nothing unless the copy constructor of `F` throws an exception. [#bind_1_1] template ``/unspecified-1-1/`` bind(F f) * /Effects:/ Equivalent to `bind(f)`. * /Notes:/ Implementations are allowed to infer the return type of `f` via other means as an extension, without relying on the `result_type` member. [#bind_2] template ``/unspecified-2/`` bind(R (*f) ()) * /Returns:/ A function object \u03BB such that the expression \u03BB`(v1, v2, ..., vm)` is equivalent to `f()`. * /Throws:/ Nothing. [#bind_3] template ``/unspecified-3/`` bind(F f, A1 a1) * /Returns:/ A function object \u03BB such that the expression \u03BB`(v1, v2, ..., vm)` is equivalent to `f(`\u03BC`(a1, v1, v2, ..., vm))`, implicitly converted to `R`. * /Throws:/ Nothing unless the copy constructors of `F` or `A1` throw an exception. [#bind_3_1] template ``/unspecified-3-1/`` bind(F f, A1 a1) * /Effects:/ Equivalent to `bind(f, a1)`. * /Notes:/ Implementations are allowed to infer the return type of `f` via other means as an extension, without relying on the `result_type` member. [#bind_4] template ``/unspecified-4/`` bind(R (*f) (B1), A1 a1) * /Returns:/ A function object \u03BB such that the expression \u03BB`(v1, v2, ..., vm)` is equivalent to `f(`\u03BC`(a1, v1, v2, ..., vm))`. * /Throws:/ Nothing unless the copy constructor of `A1` throws an exception. [#bind_5] template ``/unspecified-5/`` bind(R (T::*f) (), A1 a1) * /Effects:/ Equivalent to `bind(`[@boost:/libs/bind/mem_fn.html `boost::mem_fn`]`(f), a1)`. [#bind_6] template ``/unspecified-6/`` bind(R (T::*f) () const, A1 a1) * /Effects:/ Equivalent to `bind(`[@boost:/libs/bind/mem_fn.html `boost::mem_fn`]`(f), a1)`. [#bind_6_1] template ``/unspecified-6-1/`` bind(R T::*f, A1 a1) * /Effects:/ Equivalent to `bind(`[@boost:/libs/bind/mem_fn.html `boost::mem_fn`]`(f), a1)`. [#bind_7] template ``/unspecified-7/`` bind(F f, A1 a1, A2 a2) * /Returns:/ A function object \u03BB such that the expression \u03BB`(v1, v2, ..., vm)` is equivalent to `f(`\u03BC`(a1, v1, v2, ..., vm), `\u03BC`(a2, v1, v2, ..., vm))`, implicitly converted to `R`. * /Throws:/ Nothing unless the copy constructors of `F`, `A1` or `A2` throw an exception. [#bind_7_1] template ``/unspecified-7-1/`` bind(F f, A1 a1, A2 a2) * /Effects:/ Equivalent to `bind(f, a1, a2)`. * /Notes:/ Implementations are allowed to infer the return type of `f` via other means as an extension, without relying on the `result_type` member. [#bind_8] template ``/unspecified-8/`` bind(R (*f) (B1, B2), A1 a1, A2 a2) * /Returns:/ A function object \u03BB such that the expression \u03BB`(v1, v2, ..., vm)` is equivalent to `f(`\u03BC`(a1, v1, v2, ..., vm), `\u03BC`(a2, v1, v2, ..., vm))`. * /Throws:/ Nothing unless the copy constructors of `A1` or `A2` throw an exception. [#bind_9] template ``/unspecified-9/`` bind(R (T::*f) (B1), A1 a1, A2 a2) * /Effects:/ Equivalent to `bind(`[@boost:/libs/bind/mem_fn.html `boost::mem_fn`]`(f), a1, a2)`. [#bind_10] template ``/unspecified-10/`` bind(R (T::*f) (B1) const, A1 a1, A2 a2) * /Effects:/ Equivalent to `bind(`[@boost:/libs/bind/mem_fn.html `boost::mem_fn`]`(f), a1, a2)`. [endsect] [section Additional overloads] Implementations are allowed to provide additional `bind` overloads in order to support more arguments or different function pointer variations. [endsect] [endsect]