type_traits.hpp 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. // Copyright Shreyans Doshi 2017.
  2. // Distributed under the Boost Software License, Version 1.0. (See
  3. // accompanying file LICENSE_1_0.txt or copy at
  4. // http://www.boost.org/LICENSE_1_0.txt)
  5. #ifndef BOOST_PYTHON_DETAIL_TYPE_TRAITS_HPP
  6. # define BOOST_PYTHON_DETAIL_TYPE_TRAITS_HPP
  7. #include <boost/config.hpp>
  8. #ifdef BOOST_NO_CXX11_HDR_TYPE_TRAITS
  9. # include <boost/type_traits/transform_traits.hpp>
  10. # include <boost/type_traits/same_traits.hpp>
  11. # include <boost/type_traits/cv_traits.hpp>
  12. # include <boost/type_traits/is_polymorphic.hpp>
  13. # include <boost/type_traits/composite_traits.hpp>
  14. # include <boost/type_traits/conversion_traits.hpp>
  15. # include <boost/type_traits/add_pointer.hpp>
  16. # include <boost/type_traits/remove_pointer.hpp>
  17. # include <boost/type_traits/is_void.hpp>
  18. # include <boost/type_traits/object_traits.hpp>
  19. # include <boost/type_traits/add_lvalue_reference.hpp>
  20. # include <boost/type_traits/function_traits.hpp>
  21. # include <boost/type_traits/is_scalar.hpp>
  22. # include <boost/type_traits/alignment_traits.hpp>
  23. # include <boost/mpl/bool.hpp>
  24. #else
  25. # include <type_traits>
  26. #endif
  27. # include <boost/type_traits/is_base_and_derived.hpp>
  28. # include <boost/type_traits/alignment_traits.hpp>
  29. # include <boost/type_traits/has_trivial_copy.hpp>
  30. namespace boost { namespace python { namespace detail {
  31. #ifdef BOOST_NO_CXX11_HDR_TYPE_TRAITS
  32. using boost::alignment_of;
  33. using boost::add_const;
  34. using boost::add_cv;
  35. using boost::add_lvalue_reference;
  36. using boost::add_pointer;
  37. using boost::is_array;
  38. using boost::is_class;
  39. using boost::is_const;
  40. using boost::is_convertible;
  41. using boost::is_enum;
  42. using boost::is_function;
  43. using boost::is_integral;
  44. using boost::is_lvalue_reference;
  45. using boost::is_member_function_pointer;
  46. using boost::is_member_pointer;
  47. using boost::is_pointer;
  48. using boost::is_polymorphic;
  49. using boost::is_reference;
  50. using boost::is_same;
  51. using boost::is_scalar;
  52. using boost::is_union;
  53. using boost::is_void;
  54. using boost::is_volatile;
  55. using boost::remove_reference;
  56. using boost::remove_pointer;
  57. using boost::remove_cv;
  58. using boost::remove_const;
  59. using boost::mpl::true_;
  60. using boost::mpl::false_;
  61. #else
  62. using std::alignment_of;
  63. using std::add_const;
  64. using std::add_cv;
  65. using std::add_lvalue_reference;
  66. using std::add_pointer;
  67. using std::is_array;
  68. using std::is_class;
  69. using std::is_const;
  70. using std::is_convertible;
  71. using std::is_enum;
  72. using std::is_function;
  73. using std::is_integral;
  74. using std::is_lvalue_reference;
  75. using std::is_member_function_pointer;
  76. using std::is_member_pointer;
  77. using std::is_pointer;
  78. using std::is_polymorphic;
  79. using std::is_reference;
  80. using std::is_same;
  81. using std::is_scalar;
  82. using std::is_union;
  83. using std::is_void;
  84. using std::is_volatile;
  85. using std::remove_reference;
  86. using std::remove_pointer;
  87. using std::remove_cv;
  88. using std::remove_const;
  89. typedef std::integral_constant<bool, true> true_;
  90. typedef std::integral_constant<bool, false> false_;
  91. #endif
  92. using boost::is_base_and_derived;
  93. using boost::type_with_alignment;
  94. using boost::has_trivial_copy;
  95. }}} // namespace boost::python::detail
  96. #endif //BOOST_DETAIL_TYPE_TRAITS_HPP