| [/ |
| / Copyright (c) 2001, 2002 Peter Dimov and Multi Media Ltd. |
| / Copyright (c) 2003-2005 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:implementation Implementation] |
| |
| [section Files] |
| |
| * [@../../include/boost/mem_fn.hpp boost/mem_fn.hpp] (main header) |
| * [@../../include/boost/bind/mem_fn_cc.hpp boost/bind/mem_fn_cc.hpp] (used by `mem_fn.hpp`, do not include directly) |
| * [@../../include/boost/bind/mem_fn_vw.hpp boost/bind/mem_fn_vw.hpp] (used by `mem_fn.hpp`, do not include directly) |
| * [@../../include/boost/bind/mem_fn_template.hpp boost/bind/mem_fn_template.hpp] (used by `mem_fn.hpp`, do not include directly) |
| * [@../../test/mem_fn_test.cpp libs/bind/test/mem_fn_test.cpp] (test) |
| * [@../../test/mem_fn_derived_test.cpp libs/bind/test/mem_fn_derived_test.cpp] (test with derived objects) |
| * [@../../test/mem_fn_fastcall_test.cpp libs/bind/test/mem_fn_fastcall_test.cpp] (test for `__fastcall`) |
| * [@../../test/mem_fn_stdcall_test.cpp libs/bind/test/mem_fn_stdcall_test.cpp] (test for `__stdcall`) |
| * [@../../test/mem_fn_void_test.cpp libs/bind/test/mem_fn_void_test.cpp] (test for `void` returns) |
| |
| [endsect] |
| |
| [section Dependencies] |
| |
| * [@boost:/libs/config/config.htm Boost.Config] |
| |
| [endsect] |
| |
| [section Number of Arguments] |
| |
| This implementation supports member functions with up to eight arguments. This |
| is not an inherent limitation of the design, but an implementation detail. |
| |
| [endsect] |
| |
| [section:stdcall `__stdcall`, `__cdecl`, and `__fastcall` Support] |
| |
| Some platforms allow several types of member functions that differ by their |
| calling convention (the rules by which the function is invoked: how are |
| arguments passed, how is the return value handled, and who cleans up the stack |
| - if any.) |
| |
| For example, Windows API functions and COM interface member functions use a |
| calling convention known as `__stdcall`. Borland VCL components use |
| `__fastcall`. UDK, the component model of OpenOffice.org, uses `__cdecl`. |
| |
| To use `mem_fn` with `__stdcall` member functions, `#define` the macro |
| `BOOST_MEM_FN_ENABLE_STDCALL` before including `<boost/mem_fn.hpp>`. |
| |
| To use `mem_fn` with `__fastcall` member functions, `#define` the macro |
| `BOOST_MEM_FN_ENABLE_FASTCALL` before including `<boost/mem_fn.hpp>`. |
| |
| To use `mem_fn` with `__cdecl` member functions, `#define` the macro |
| `BOOST_MEM_FN_ENABLE_CDECL` before including `<boost/mem_fn.hpp>`. |
| |
| [*It is best to define these macros in the project options, via `-D` on the |
| command line, or as the first line in the translation unit (.cpp file) where |
| `mem_fn` is used.] Not following this rule can lead to obscure errors when a |
| header includes `mem_fn.hpp` before the macro has been defined. |
| |
| /[Note:/ this is a non-portable extension. It is not part of the interface./]/ |
| |
| /[Note:/ Some compilers provide only minimal support for the `__stdcall` keyword./]/ |
| |
| [endsect] |
| |
| [endsect] |