123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 |
- /*
- * [begin_description]
- * Boost bind pull the placeholders, _1, _2, ... into global
- * namespace. This can conflict with the C++03 TR1 and C++11
- * std::placeholders. This header provides a workaround for
- * this problem.
- * [end_description]
- *
- * Copyright 2012 Christoph Koke
- * Copyright 2012 Karsten Ahnert
- *
- * 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)
- * */
- #ifndef BOOST_NUMERIC_ODEINT_UTIL_BIND_HPP_INCLUDED
- #define BOOST_NUMERIC_ODEINT_UTIL_BIND_HPP_INCLUDED
- #include <boost/numeric/odeint/config.hpp>
- #if BOOST_NUMERIC_ODEINT_CXX11
- #include <functional>
- #else
- #define BOOST_BIND_NO_PLACEHOLDERS
- #include <boost/bind.hpp>
- #endif
- namespace boost {
- namespace numeric {
- namespace odeint {
- namespace detail {
- #if BOOST_NUMERIC_ODEINT_CXX11
- using ::std::bind;
- using namespace ::std::placeholders;
- #else
- // unnamed namespace to avoid multiple declarations (#138)
- namespace {
- using ::boost::bind;
- boost::arg<1> _1;
- boost::arg<2> _2;
- }
- // using ::boost::bind;
- // using ::_1;
- // using ::_2;
- #endif
- }
- }
- }
- }
- /*
- // the following is the suggested way. Unfortunately it does not work with all compilers.
- #ifdef BOOST_NO_CXX11_HDR_FUNCTIONAL
- #include <boost/bind.hpp>
- #else
- #include <functional>
- #endif
- namespace boost {
- namespace numeric {
- namespace odeint {
- namespace detail {
-
- #ifdef BOOST_NO_CXX11_HDR_FUNCTIONAL
- using ::boost::bind;
- using ::_1;
- using ::_2;
- #else
- using ::std::bind;
- using namespace ::std::placeholders;
- #endif
- }
- }
- }
- }*/
- #endif // BOOST_NUMERIC_ODEINT_UTIL_BIND_HPP_INCLUDED
|