williamr@2: williamr@2: // Copyright Daniel James 2005-2006. Use, modification, and distribution are williamr@2: // subject to the Boost Software License, Version 1.0. (See accompanying williamr@2: // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) williamr@2: williamr@2: #if !defined(BOOST_DETAIL_CONTAINER_FWD_HPP) williamr@2: #define BOOST_DETAIL_CONTAINER_FWD_HPP williamr@2: williamr@2: #include williamr@2: #include williamr@2: williamr@2: #if BOOST_WORKAROUND(__GNUC__, < 3) && !defined(__SGI_STL_PORT) && !defined(_STLPORT_VERSION) williamr@2: #define BOOST_HASH_CHAR_TRAITS string_char_traits williamr@2: #else williamr@2: #define BOOST_HASH_CHAR_TRAITS char_traits williamr@2: #endif williamr@2: williamr@2: #if (defined(__GLIBCXX__) && defined(_GLIBCXX_DEBUG)) \ williamr@2: || BOOST_WORKAROUND(__BORLANDC__, > 0x551) \ williamr@2: || BOOST_WORKAROUND(__DMC__, BOOST_TESTED_AT(0x842)) \ williamr@2: || (defined(__SGI_STL_PORT) || defined(_STLPORT_VERSION)) williamr@2: williamr@2: #include williamr@2: #include williamr@2: #include williamr@2: #include williamr@2: #include williamr@2: #include williamr@2: #include williamr@2: #include williamr@2: williamr@2: #else williamr@2: williamr@2: #include williamr@2: williamr@2: #if !defined(__SGI_STL_PORT) && !defined(_STLPORT_VERSION) && \ williamr@2: defined(__STL_CONFIG_H) williamr@2: williamr@2: #define BOOST_CONTAINER_FWD_BAD_BITSET williamr@2: williamr@2: #if !defined(__STL_NON_TYPE_TMPL_PARAM_BUG) williamr@2: #define BOOST_CONTAINER_FWD_BAD_DEQUE williamr@2: #endif williamr@2: williamr@2: #endif williamr@2: williamr@2: #if defined(BOOST_CONTAINER_FWD_BAD_DEQUE) williamr@2: #include williamr@2: #endif williamr@2: williamr@2: #if defined(BOOST_CONTAINER_FWD_BAD_BITSET) williamr@2: #include williamr@2: #endif williamr@2: williamr@2: #if defined(BOOST_MSVC) williamr@2: #pragma warning(push) williamr@2: #pragma warning(disable:4099) // struct/class mismatch in fwd declarations williamr@2: #endif williamr@2: williamr@2: namespace std williamr@2: { williamr@2: template class allocator; williamr@2: template class basic_string; williamr@2: template struct BOOST_HASH_CHAR_TRAITS; williamr@2: template class complex; williamr@2: } williamr@2: williamr@2: // gcc 3.4 and greater williamr@2: namespace std williamr@2: { williamr@2: #if !defined(BOOST_CONTAINER_FWD_BAD_DEQUE) williamr@2: template class deque; williamr@2: #endif williamr@2: williamr@2: template class list; williamr@2: template class vector; williamr@2: template class map; williamr@2: template williamr@2: class multimap; williamr@2: template class set; williamr@2: template class multiset; williamr@2: williamr@2: #if !defined(BOOST_CONTAINER_FWD_BAD_BITSET) williamr@2: template class bitset; williamr@2: #endif williamr@2: template struct pair; williamr@2: } williamr@2: williamr@2: #if defined(BOOST_MSVC) williamr@2: #pragma warning(pop) williamr@2: #endif williamr@2: williamr@2: #endif williamr@2: williamr@2: #endif