details_bind_member_functions.qbk 1.3 KB

123456789101112131415161718192021222324252627282930313233343536
  1. [/============================================================================
  2. Boost.odeint
  3. Copyright 2011-2012 Karsten Ahnert
  4. Copyright 2011-2012 Mario Mulansky
  5. Use, modification and distribution is subject to the Boost Software License,
  6. Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
  7. http://www.boost.org/LICENSE_1_0.txt)
  8. =============================================================================/]
  9. [section Binding member functions]
  10. [import ../examples/bind_member_functions.cpp]
  11. Binding member functions to a function objects suitable for odeint system function is not easy, at least in C++03. The usual way of using __boost_bind does not work because of the forwarding problem. odeint provides two `do_step` method which only differ in the const specifiers of the arguments and __boost_bind binders only provide the specializations up to two argument which is not enough for odeint.
  12. But one can easily implement the according binders themself:
  13. [ode_wrapper]
  14. One can use this binder as follows
  15. [bind_member_function]
  16. [section Binding member functions in C++11]
  17. [import ../examples/bind_member_functions_cpp11.cpp]
  18. In C++11 one can use `std::bind` and one does not need to implement the bind themself:
  19. [bind_member_function_cpp11]
  20. [endsect]
  21. [endsect]