container_fwd.hpp 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. // Copyright 2005-2008 Daniel James.
  2. // Distributed under the Boost Software License, Version 1.0. (See accompanying
  3. // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
  4. #if !defined(BOOST_DETAIL_CONTAINER_FWD_HPP)
  5. #define BOOST_DETAIL_CONTAINER_FWD_HPP
  6. #if defined(_MSC_VER) && (_MSC_VER >= 1020)
  7. # pragma once
  8. #endif
  9. #include <boost/config.hpp>
  10. #include <boost/detail/workaround.hpp>
  11. #if ((defined(__GLIBCPP__) || defined(__GLIBCXX__)) && defined(_GLIBCXX_DEBUG)) \
  12. || BOOST_WORKAROUND(__BORLANDC__, > 0x551) \
  13. || BOOST_WORKAROUND(__DMC__, BOOST_TESTED_AT(0x842)) \
  14. || (defined(__SGI_STL_PORT) || defined(_STLPORT_VERSION))
  15. #include <deque>
  16. #include <list>
  17. #include <vector>
  18. #include <map>
  19. #include <set>
  20. #include <bitset>
  21. #include <string>
  22. #include <complex>
  23. #else
  24. #include <cstddef>
  25. #if !defined(__SGI_STL_PORT) && !defined(_STLPORT_VERSION) && \
  26. defined(__STL_CONFIG_H)
  27. #define BOOST_CONTAINER_FWD_BAD_BITSET
  28. #if !defined(__STL_NON_TYPE_TMPL_PARAM_BUG)
  29. #define BOOST_CONTAINER_FWD_BAD_DEQUE
  30. #endif
  31. #endif
  32. #if defined(BOOST_CONTAINER_FWD_BAD_DEQUE)
  33. #include <deque>
  34. #endif
  35. #if defined(BOOST_CONTAINER_FWD_BAD_BITSET)
  36. #include <bitset>
  37. #endif
  38. #if defined(BOOST_MSVC)
  39. #pragma warning(push)
  40. #pragma warning(disable:4099) // struct/class mismatch in fwd declarations
  41. #endif
  42. namespace std
  43. {
  44. template <class T> class allocator;
  45. template <class charT, class traits, class Allocator> class basic_string;
  46. #if BOOST_WORKAROUND(__GNUC__, < 3) && !defined(__SGI_STL_PORT) && !defined(_STLPORT_VERSION)
  47. template <class charT> struct string_char_traits;
  48. #else
  49. template <class charT> struct char_traits;
  50. #endif
  51. template <class T> class complex;
  52. }
  53. // gcc 3.4 and greater
  54. namespace std
  55. {
  56. #if !defined(BOOST_CONTAINER_FWD_BAD_DEQUE)
  57. template <class T, class Allocator> class deque;
  58. #endif
  59. template <class T, class Allocator> class list;
  60. template <class T, class Allocator> class vector;
  61. template <class Key, class T, class Compare, class Allocator> class map;
  62. template <class Key, class T, class Compare, class Allocator>
  63. class multimap;
  64. template <class Key, class Compare, class Allocator> class set;
  65. template <class Key, class Compare, class Allocator> class multiset;
  66. #if !defined(BOOST_CONTAINER_FWD_BAD_BITSET)
  67. template <size_t N> class bitset;
  68. #endif
  69. template <class T1, class T2> struct pair;
  70. }
  71. #if defined(BOOST_MSVC)
  72. #pragma warning(pop)
  73. #endif
  74. #endif
  75. #endif