Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-01-18 09:30:41

0001 
0002 // Copyright 2005-2011 Daniel James.
0003 // Distributed under the Boost Software License, Version 1.0. (See accompanying
0004 // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
0005 
0006 // Note: if you change this include guard, you also need to change
0007 // container_fwd_compile_fail.cpp
0008 #if !defined(BOOST_DETAIL_CONTAINER_FWD_HPP)
0009 #define BOOST_DETAIL_CONTAINER_FWD_HPP
0010 
0011 #if defined(_MSC_VER) && \
0012     !defined(BOOST_DETAIL_TEST_CONFIG_ONLY)
0013 # pragma once
0014 #endif
0015 
0016 #include <boost/config.hpp>
0017 #include <boost/detail/workaround.hpp>
0018 
0019 ////////////////////////////////////////////////////////////////////////////////
0020 //                                                                            //
0021 // Define BOOST_DETAIL_NO_CONTAINER_FWD if you don't want this header to      //
0022 // forward declare standard containers.                                       //
0023 //                                                                            //
0024 // BOOST_DETAIL_CONTAINER_FWD to make it foward declare containers even if it //
0025 // normally doesn't.                                                          //
0026 //                                                                            //
0027 // BOOST_DETAIL_NO_CONTAINER_FWD overrides BOOST_DETAIL_CONTAINER_FWD.        //
0028 //                                                                            //
0029 ////////////////////////////////////////////////////////////////////////////////
0030 
0031 #if !defined(BOOST_DETAIL_NO_CONTAINER_FWD)
0032 #  if defined(BOOST_DETAIL_CONTAINER_FWD)
0033      // Force forward declarations.
0034 #  elif defined(__SGI_STL_PORT) || defined(_STLPORT_VERSION)
0035      // STLport
0036 #    define BOOST_DETAIL_NO_CONTAINER_FWD
0037 #  elif defined(__LIBCOMO__)
0038      // Comeau STL:
0039 #    define BOOST_DETAIL_NO_CONTAINER_FWD
0040 #  elif defined(__STD_RWCOMPILER_H__) || defined(_RWSTD_VER)
0041      // Rogue Wave library:
0042 #    define BOOST_DETAIL_NO_CONTAINER_FWD
0043 #  elif defined(_LIBCPP_VERSION)
0044      // libc++
0045 #    define BOOST_DETAIL_NO_CONTAINER_FWD
0046 #  elif defined(__GLIBCPP__) || defined(__GLIBCXX__)
0047      // GNU libstdc++ 3
0048      //
0049      // Disable forwarding for all recent versions, as the library has a
0050      // versioned namespace mode, and I don't know how to detect it.
0051 #    if __GLIBCXX__ >= 20070513 \
0052         || defined(_GLIBCXX_DEBUG) \
0053         || defined(_GLIBCXX_PARALLEL) \
0054         || defined(_GLIBCXX_PROFILE)
0055 #      define BOOST_DETAIL_NO_CONTAINER_FWD
0056 #    else
0057 #      if defined(__GLIBCXX__) && __GLIBCXX__ >= 20040530
0058 #        define BOOST_CONTAINER_FWD_COMPLEX_STRUCT
0059 #      endif
0060 #    endif
0061 #  elif defined(__STL_CONFIG_H)
0062      // generic SGI STL
0063      //
0064      // Forward declaration seems to be okay, but it has a couple of odd
0065      // implementations.
0066 #    define BOOST_CONTAINER_FWD_BAD_BITSET
0067 #    if !defined(__STL_NON_TYPE_TMPL_PARAM_BUG)
0068 #      define BOOST_CONTAINER_FWD_BAD_DEQUE
0069 #     endif
0070 #  elif defined(__MSL_CPP__)
0071      // MSL standard lib:
0072 #    define BOOST_DETAIL_NO_CONTAINER_FWD
0073 #  elif defined(__IBMCPP__)
0074      // The default VACPP std lib, forward declaration seems to be fine.
0075 #  elif defined(MSIPL_COMPILE_H)
0076      // Modena C++ standard library
0077 #    define BOOST_DETAIL_NO_CONTAINER_FWD
0078 #  elif (defined(_YVALS) && !defined(__IBMCPP__)) || defined(_CPPLIB_VER)
0079      // Dinkumware Library (this has to appear after any possible replacement
0080      // libraries)
0081 #  else
0082 #    define BOOST_DETAIL_NO_CONTAINER_FWD
0083 #  endif
0084 #endif
0085 
0086 #if !defined(BOOST_DETAIL_TEST_CONFIG_ONLY)
0087 
0088 #if defined(BOOST_DETAIL_NO_CONTAINER_FWD) && \
0089     !defined(BOOST_DETAIL_TEST_FORCE_CONTAINER_FWD)
0090 
0091 #include <deque>
0092 #include <list>
0093 #include <vector>
0094 #include <map>
0095 #include <set>
0096 #include <bitset>
0097 #include <string>
0098 #include <complex>
0099 
0100 #else
0101 
0102 #include <cstddef>
0103 
0104 #if defined(BOOST_CONTAINER_FWD_BAD_DEQUE)
0105 #include <deque>
0106 #endif
0107 
0108 #if defined(BOOST_CONTAINER_FWD_BAD_BITSET)
0109 #include <bitset>
0110 #endif
0111 
0112 #if defined(BOOST_MSVC)
0113 #pragma warning(push)
0114 #pragma warning(disable:4099) // struct/class mismatch in fwd declarations
0115 #endif
0116 
0117 namespace std
0118 {
0119     template <class T> class allocator;
0120     template <class charT, class traits, class Allocator> class basic_string;
0121 
0122     template <class charT> struct char_traits;
0123 
0124 #if defined(BOOST_CONTAINER_FWD_COMPLEX_STRUCT)
0125     template <class T> struct complex;
0126 #else
0127     template <class T> class complex;
0128 #endif
0129 
0130 #if !defined(BOOST_CONTAINER_FWD_BAD_DEQUE)
0131     template <class T, class Allocator> class deque;
0132 #endif
0133 
0134     template <class T, class Allocator> class list;
0135     template <class T, class Allocator> class vector;
0136     template <class Key, class T, class Compare, class Allocator> class map;
0137     template <class Key, class T, class Compare, class Allocator>
0138     class multimap;
0139     template <class Key, class Compare, class Allocator> class set;
0140     template <class Key, class Compare, class Allocator> class multiset;
0141 
0142 #if !defined(BOOST_CONTAINER_FWD_BAD_BITSET)
0143     template <size_t N> class bitset;
0144 #endif
0145     template <class T1, class T2> struct pair;
0146 }
0147 
0148 #if defined(BOOST_MSVC)
0149 #pragma warning(pop)
0150 #endif
0151 
0152 #endif // BOOST_DETAIL_NO_CONTAINER_FWD &&
0153        // !defined(BOOST_DETAIL_TEST_FORCE_CONTAINER_FWD)
0154 
0155 #endif // BOOST_DETAIL_TEST_CONFIG_ONLY
0156 
0157 #endif