1 /* Boost interval/detail/bugs.hpp file
3 * Copyright 2000 Jens Maurer
4 * Copyright 2002 Hervé Brönnimann, Guillaume Melquiond, Sylvain Pion
6 * Distributed under the Boost Software License, Version 1.0.
7 * (See accompanying file LICENSE_1_0.txt or
8 * copy at http://www.boost.org/LICENSE_1_0.txt)
11 #ifndef BOOST_NUMERIC_INTERVAL_DETAIL_BUGS
12 #define BOOST_NUMERIC_INTERVAL_DETAIL_BUGS
14 #include <boost/config.hpp>
16 #if defined(__GLIBC__) && (defined(__USE_MISC) || defined(__USE_XOPEN_EXTENDED) || defined(__USE_ISOC99)) && !defined(__ICC)
17 # define BOOST_HAS_INV_HYPERBOLIC
20 #ifdef BOOST_NO_STDC_NAMESPACE
21 # define BOOST_NUMERIC_INTERVAL_using_math(a) using ::a
22 # ifdef BOOST_HAS_INV_HYPERBOLIC
23 # define BOOST_NUMERIC_INTERVAL_using_ahyp(a) using ::a
26 # define BOOST_NUMERIC_INTERVAL_using_math(a) using std::a
27 # if defined(BOOST_HAS_INV_HYPERBOLIC)
28 # if defined(__GLIBCPP__) || defined(__GLIBCXX__)
29 # define BOOST_NUMERIC_INTERVAL_using_ahyp(a) using ::a
31 # define BOOST_NUMERIC_INTERVAL_using_ahyp(a) using std::a
36 #if defined(__COMO__) || defined(BOOST_INTEL)
37 # define BOOST_NUMERIC_INTERVAL_using_max(a) using std::a
38 #elif defined(BOOST_NO_STDC_NAMESPACE)
39 # define BOOST_NUMERIC_INTERVAL_using_max(a) using ::a
41 # define BOOST_NUMERIC_INTERVAL_using_max(a) using std::a
44 #ifndef BOOST_NUMERIC_INTERVAL_using_ahyp
45 # define BOOST_NUMERIC_INTERVAL_using_ahyp(a)
48 #if defined(__GNUC__) && (__GNUC__ <= 2)
49 // cf PR c++/1981 for a description of the bug
51 #include <boost/config/no_tr1/cmath.hpp>
69 # undef BOOST_NUMERIC_INTERVAL_using_max
70 # undef BOOST_NUMERIC_INTERVAL_using_math
71 # define BOOST_NUMERIC_INTERVAL_using_max(a)
72 # define BOOST_NUMERIC_INTERVAL_using_math(a)
73 # undef BOOST_NUMERIC_INTERVAL_using_ahyp
74 # define BOOST_NUMERIC_INTERVAL_using_ahyp(a)
75 } // namespace numeric
79 #endif // BOOST_NUMERIC_INTERVAL_DETAIL_BUGS