config.hpp 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. // (C) Copyright Steve Cleary, Beman Dawes, Howard Hinnant & John Maddock 2000.
  2. // Use, modification and distribution are subject to the Boost Software License,
  3. // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
  4. // http://www.boost.org/LICENSE_1_0.txt).
  5. //
  6. // See http://www.boost.org/libs/type_traits for most recent version including documentation.
  7. #ifndef BOOST_TT_CONFIG_HPP_INCLUDED
  8. #define BOOST_TT_CONFIG_HPP_INCLUDED
  9. #ifndef BOOST_CONFIG_HPP
  10. #include <boost/config.hpp>
  11. #endif
  12. #include <boost/detail/workaround.hpp>
  13. //
  14. // whenever we have a conversion function with ellipses
  15. // it needs to be declared __cdecl to suppress compiler
  16. // warnings from MS and Borland compilers (this *must*
  17. // appear before we include is_same.hpp below):
  18. #if defined(BOOST_MSVC) || (defined(__BORLANDC__) && !defined(BOOST_DISABLE_WIN32))
  19. # define BOOST_TT_DECL __cdecl
  20. #else
  21. # define BOOST_TT_DECL /**/
  22. #endif
  23. # if (BOOST_WORKAROUND(__MWERKS__, < 0x3000) \
  24. || BOOST_WORKAROUND(BOOST_MSVC, <= 1301) \
  25. || !defined(__EDG_VERSION__) && BOOST_WORKAROUND(__GNUC__, < 3) \
  26. || BOOST_WORKAROUND(__IBMCPP__, < 600 ) \
  27. || BOOST_WORKAROUND(__BORLANDC__, < 0x5A0) \
  28. || defined(__ghs) \
  29. || BOOST_WORKAROUND(__HP_aCC, < 60700) \
  30. || BOOST_WORKAROUND(MPW_CPLUS, BOOST_TESTED_AT(0x890)) \
  31. || BOOST_WORKAROUND(__SUNPRO_CC, BOOST_TESTED_AT(0x580))) \
  32. && defined(BOOST_NO_IS_ABSTRACT)
  33. # define BOOST_TT_NO_CONFORMING_IS_CLASS_IMPLEMENTATION 1
  34. #endif
  35. #ifndef BOOST_TT_NO_CONFORMING_IS_CLASS_IMPLEMENTATION
  36. # define BOOST_TT_HAS_CONFORMING_IS_CLASS_IMPLEMENTATION 1
  37. #endif
  38. //
  39. // Define BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
  40. // when we can't test for function types with elipsis:
  41. //
  42. #if BOOST_WORKAROUND(__GNUC__, < 3)
  43. # define BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
  44. #endif
  45. //
  46. // define BOOST_TT_TEST_MS_FUNC_SIGS
  47. // when we want to test __stdcall etc function types with is_function etc
  48. // (Note, does not work with Borland, even though it does support __stdcall etc):
  49. //
  50. #if defined(_MSC_EXTENSIONS) && !defined(__BORLANDC__)
  51. # define BOOST_TT_TEST_MS_FUNC_SIGS
  52. #endif
  53. //
  54. // define BOOST_TT_NO_CV_FUNC_TEST
  55. // if tests for cv-qualified member functions don't
  56. // work in is_member_function_pointer
  57. //
  58. #if BOOST_WORKAROUND(__MWERKS__, < 0x3000) || BOOST_WORKAROUND(__IBMCPP__, <= 600)
  59. # define BOOST_TT_NO_CV_FUNC_TEST
  60. #endif
  61. #endif // BOOST_TT_CONFIG_HPP_INCLUDED