]>
Commit | Line | Data |
---|---|---|
1 | /* | |
2 | * [begin_description] | |
3 | * Boost bind pull the placeholders, _1, _2, ... into global | |
4 | * namespace. This can conflict with the C++03 TR1 and C++11 | |
5 | * std::placeholders. This header provides a workaround for | |
6 | * this problem. | |
7 | * [end_description] | |
8 | * | |
9 | * Copyright 2012 Christoph Koke | |
10 | * Copyright 2012 Karsten Ahnert | |
11 | * | |
12 | * Distributed under the Boost Software License, Version 1.0. | |
13 | * (See accompanying file LICENSE_1_0.txt or | |
14 | * copy at http://www.boost.org/LICENSE_1_0.txt) | |
15 | * */ | |
16 | ||
17 | #ifndef BOOST_NUMERIC_ODEINT_UTIL_BIND_HPP_INCLUDED | |
18 | #define BOOST_NUMERIC_ODEINT_UTIL_BIND_HPP_INCLUDED | |
19 | ||
20 | ||
21 | #include <boost/numeric/odeint/config.hpp> | |
22 | ||
23 | ||
24 | #if BOOST_NUMERIC_ODEINT_CXX11 | |
25 | #include <functional> | |
26 | #else | |
27 | #define BOOST_BIND_NO_PLACEHOLDERS | |
28 | #include <boost/bind.hpp> | |
29 | #endif | |
30 | ||
31 | namespace boost { | |
32 | namespace numeric { | |
33 | namespace odeint { | |
34 | namespace detail { | |
35 | ||
36 | #if BOOST_NUMERIC_ODEINT_CXX11 | |
37 | ||
38 | using ::std::bind; | |
39 | using namespace ::std::placeholders; | |
40 | ||
41 | ||
42 | #else | |
43 | ||
44 | // unnamed namespace to avoid multiple declarations (#138) | |
45 | namespace { | |
46 | using ::boost::bind; | |
47 | boost::arg<1> _1; | |
48 | boost::arg<2> _2; | |
49 | } | |
50 | // using ::boost::bind; | |
51 | // using ::_1; | |
52 | // using ::_2; | |
53 | ||
54 | #endif | |
55 | ||
56 | } | |
57 | } | |
58 | } | |
59 | } | |
60 | ||
61 | ||
62 | ||
63 | ||
64 | ||
65 | /* | |
66 | ||
67 | // the following is the suggested way. Unfortunately it does not work with all compilers. | |
68 | ||
69 | #ifdef BOOST_NO_CXX11_HDR_FUNCTIONAL | |
70 | #include <boost/bind.hpp> | |
71 | #else | |
72 | #include <functional> | |
73 | #endif | |
74 | ||
75 | ||
76 | namespace boost { | |
77 | namespace numeric { | |
78 | namespace odeint { | |
79 | namespace detail { | |
80 | ||
81 | ||
82 | #ifdef BOOST_NO_CXX11_HDR_FUNCTIONAL | |
83 | ||
84 | using ::boost::bind; | |
85 | using ::_1; | |
86 | using ::_2; | |
87 | ||
88 | #else | |
89 | ||
90 | using ::std::bind; | |
91 | using namespace ::std::placeholders; | |
92 | ||
93 | #endif | |
94 | ||
95 | ||
96 | } | |
97 | } | |
98 | } | |
99 | }*/ | |
100 | ||
101 | #endif // BOOST_NUMERIC_ODEINT_UTIL_BIND_HPP_INCLUDED |