visualc.hpp
Go to the documentation of this file.
00001 //  (C) Copyright John Maddock 2001 - 2003. 
00002 //  (C) Copyright Darin Adler 2001 - 2002. 
00003 //  (C) Copyright Peter Dimov 2001. 
00004 //  (C) Copyright Aleksey Gurtovoy 2002. 
00005 //  (C) Copyright David Abrahams 2002 - 2003. 
00006 //  (C) Copyright Beman Dawes 2002 - 2003. 
00007 //  Use, modification and distribution are subject to the 
00008 //  Boost Software License, Version 1.0. (See accompanying file 
00009 //  LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
00010 
00011 //  See http://www.boost.org for most recent version.
00012 
00013 //  Microsoft Visual C++ compiler setup:
00014 
00015 #define BOOST_MSVC _MSC_VER
00016 
00017 // turn off the warnings before we #include anything
00018 #pragma warning( disable : 4503 ) // warning: decorated name length exceeded
00019 
00020 #if _MSC_VER < 1300  // 1200 == VC++ 6.0, 1200-1202 == eVC++4
00021 #  pragma warning( disable : 4786 ) // ident trunc to '255' chars in debug info
00022 #  define BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS
00023 #  define BOOST_NO_VOID_RETURNS
00024 #  define BOOST_NO_EXCEPTION_STD_NAMESPACE
00025 
00026 #  if BOOST_MSVC == 1202
00027 #    define BOOST_NO_STD_TYPEINFO
00028 #  endif
00029 
00030    // disable min/max macro defines on vc6:
00031    //
00032 #endif
00033 
00034 #if (_MSC_VER <= 1300)  // 1300 == VC++ 7.0
00035 
00036 #  if !defined(_MSC_EXTENSIONS) && !defined(BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS)      // VC7 bug with /Za
00037 #    define BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS
00038 #  endif
00039 
00040 #  define BOOST_NO_EXPLICIT_FUNCTION_TEMPLATE_ARGUMENTS
00041 #  define BOOST_NO_INCLASS_MEMBER_INITIALIZATION
00042 #  define BOOST_NO_PRIVATE_IN_AGGREGATE
00043 #  define BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP
00044 #  define BOOST_NO_INTEGRAL_INT64_T
00045 #  define BOOST_NO_DEDUCED_TYPENAME
00046 #  define BOOST_NO_USING_DECLARATION_OVERLOADS_FROM_TYPENAME_BASE
00047 
00048 //    VC++ 6/7 has member templates but they have numerous problems including
00049 //    cases of silent failure, so for safety we define:
00050 #  define BOOST_NO_MEMBER_TEMPLATES
00051 //    For VC++ experts wishing to attempt workarounds, we define:
00052 #  define BOOST_MSVC6_MEMBER_TEMPLATES
00053 
00054 #  define BOOST_NO_MEMBER_TEMPLATE_FRIENDS
00055 #  define BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
00056 #  define BOOST_NO_CV_VOID_SPECIALIZATIONS
00057 #  define BOOST_NO_FUNCTION_TEMPLATE_ORDERING
00058 #  define BOOST_NO_USING_TEMPLATE
00059 #  define BOOST_NO_SWPRINTF
00060 #  define BOOST_NO_TEMPLATE_TEMPLATES
00061 #  define BOOST_NO_SFINAE
00062 #  define BOOST_NO_POINTER_TO_MEMBER_TEMPLATE_PARAMETERS
00063 #  define BOOST_NO_IS_ABSTRACT
00064 #  define BOOST_NO_FUNCTION_TYPE_SPECIALIZATIONS
00065 // TODO: what version is meant here? Have there really been any fixes in cl 12.01 (as e.g. shipped with eVC4)?
00066 #  if (_MSC_VER > 1200)
00067 #     define BOOST_NO_MEMBER_FUNCTION_SPECIALIZATIONS
00068 #  endif
00069 
00070 #endif
00071 
00072 #if _MSC_VER < 1400 
00073 // although a conforming signature for swprint exists in VC7.1
00074 // it appears not to actually work:
00075 #  define BOOST_NO_SWPRINTF
00076 #endif
00077 
00078 #if defined(UNDER_CE)
00079 // Windows CE does not have a conforming signature for swprintf
00080 #  define BOOST_NO_SWPRINTF
00081 #endif
00082 
00083 #if _MSC_VER <= 1400  // 1400 == VC++ 8.0
00084 #  define BOOST_NO_MEMBER_TEMPLATE_FRIENDS
00085 #endif
00086 
00087 #if _MSC_VER <= 1600  // 1600 == VC++ 10.0
00088 #  define BOOST_NO_TWO_PHASE_NAME_LOOKUP
00089 #endif
00090 
00091 #if _MSC_VER == 1500  // 1500 == VC++ 9.0
00092    // A bug in VC9:
00093 #  define BOOST_NO_ADL_BARRIER
00094 #endif
00095 
00096 #if _MSC_VER <= 1500  || !defined(BOOST_STRICT_CONFIG) // 1500 == VC++ 9.0
00097 #  define BOOST_NO_INITIALIZER_LISTS
00098 #endif
00099 
00100 #ifndef _NATIVE_WCHAR_T_DEFINED
00101 #  define BOOST_NO_INTRINSIC_WCHAR_T
00102 #endif
00103 
00104 #if defined(_WIN32_WCE) || defined(UNDER_CE)
00105 #  define BOOST_NO_THREADEX
00106 #  define BOOST_NO_GETSYSTEMTIMEASFILETIME
00107 #  define BOOST_NO_SWPRINTF
00108 #endif
00109 
00110 //   
00111 // check for exception handling support:   
00112 #ifndef _CPPUNWIND 
00113 #  define BOOST_NO_EXCEPTIONS   
00114 #endif 
00115 
00116 //
00117 // __int64 support:
00118 //
00119 #if (_MSC_VER >= 1200)
00120 #   define BOOST_HAS_MS_INT64
00121 #endif
00122 #if (_MSC_VER >= 1310) && defined(_MSC_EXTENSIONS)
00123 #   define BOOST_HAS_LONG_LONG
00124 #else
00125 #   define BOOST_NO_LONG_LONG
00126 #endif
00127 #if (_MSC_VER >= 1400) && !defined(_DEBUG)
00128 #   define BOOST_HAS_NRVO
00129 #endif
00130 //
00131 // disable Win32 API's if compiler extentions are
00132 // turned off:
00133 //
00134 #ifndef _MSC_EXTENSIONS
00135 #  define BOOST_DISABLE_WIN32
00136 #endif
00137 #ifndef _CPPRTTI
00138 #  define BOOST_NO_RTTI
00139 #endif
00140 
00141 //
00142 // all versions support __declspec:
00143 //
00144 #define BOOST_HAS_DECLSPEC
00145 //
00146 // C++0x features
00147 //
00148 //   See above for BOOST_NO_LONG_LONG
00149 #define BOOST_NO_CHAR16_T
00150 #define BOOST_NO_CHAR32_T
00151 #define BOOST_NO_CONSTEXPR
00152 #define BOOST_NO_DECLTYPE
00153 #define BOOST_NO_DEFAULTED_FUNCTIONS
00154 #define BOOST_NO_DELETED_FUNCTIONS
00155 #define BOOST_NO_EXPLICIT_CONVERSION_OPERATORS
00156 #define BOOST_NO_EXTERN_TEMPLATE
00157 #define BOOST_NO_RAW_LITERALS
00158 #define BOOST_NO_SCOPED_ENUMS
00159 #define BOOST_NO_UNICODE_LITERALS
00160 #define BOOST_NO_VARIADIC_TEMPLATES
00161 
00162 // MSVC 2010 CTP has some support for C++0x, but we still disable it until the compiler release
00163 // #if _MSC_VER < 1600
00164 #define BOOST_NO_RVALUE_REFERENCES
00165 #define BOOST_NO_STATIC_ASSERT
00166 #define BOOST_NO_AUTO_DECLARATIONS
00167 #define BOOST_NO_AUTO_MULTIDECLARATIONS
00168 // #endif // _MSC_VER < 1600
00169 
00170 //
00171 // prefix and suffix headers:
00172 //
00173 #ifndef BOOST_ABI_PREFIX
00174 #  define BOOST_ABI_PREFIX "boost/config/abi/msvc_prefix.hpp"
00175 #endif
00176 #ifndef BOOST_ABI_SUFFIX
00177 #  define BOOST_ABI_SUFFIX "boost/config/abi/msvc_suffix.hpp"
00178 #endif
00179 
00180 // TODO:
00181 // these things are mostly bogus. 1200 means version 12.0 of the compiler. The 
00182 // artificial versions assigned to them only refer to the versions of some IDE
00183 // these compilers have been shipped with, and even that is not all of it. Some
00184 // were shipped with freely downloadable SDKs, others as crosscompilers in eVC.
00185 // IOW, you can't use these 'versions' in any sensible way. Sorry.
00186 # if defined(UNDER_CE)
00187 #   if _MSC_VER < 1200
00188       // Note: these are so far off, they are not really supported
00189 #   elif _MSC_VER < 1300 // eVC++ 4 comes with 1200-1202
00190 #     define BOOST_COMPILER_VERSION evc4.0
00191 #   elif _MSC_VER == 1400
00192 #     define BOOST_COMPILER_VERSION evc8
00193 #   elif _MSC_VER == 1500
00194 #     define BOOST_COMPILER_VERSION evc9
00195 #   elif _MSC_VER == 1600
00196 #     define BOOST_COMPILER_VERSION evc10
00197 #   else
00198 #      if defined(BOOST_ASSERT_CONFIG)
00199 #         error "Unknown EVC++ compiler version - please run the configure tests and report the results"
00200 #      else
00201 #         pragma message("Unknown EVC++ compiler version - please run the configure tests and report the results")
00202 #      endif
00203 #   endif
00204 # else
00205 #   if _MSC_VER < 1200
00206       // Note: these are so far off, they are not really supported
00207 #     define BOOST_COMPILER_VERSION 5.0
00208 #   elif _MSC_VER < 1300
00209 #       define BOOST_COMPILER_VERSION 6.0
00210 #   elif _MSC_VER == 1300
00211 #     define BOOST_COMPILER_VERSION 7.0
00212 #   elif _MSC_VER == 1310
00213 #     define BOOST_COMPILER_VERSION 7.1
00214 #   elif _MSC_VER == 1400
00215 #     define BOOST_COMPILER_VERSION 8.0
00216 #   elif _MSC_VER == 1500
00217 #     define BOOST_COMPILER_VERSION 9.0
00218 #   elif _MSC_VER == 1600
00219 #     define BOOST_COMPILER_VERSION 10.0
00220 #   else
00221 #     define BOOST_COMPILER_VERSION _MSC_VER
00222 #   endif
00223 # endif
00224 
00225 #define BOOST_COMPILER "Microsoft Visual C++ version " BOOST_STRINGIZE(BOOST_COMPILER_VERSION)
00226 
00227 //
00228 // versions check:
00229 // we don't support Visual C++ prior to version 6:
00230 #if _MSC_VER < 1200
00231 #error "Compiler not supported or configured - please reconfigure"
00232 #endif
00233 //
00234 // last known and checked version is 1500 (VC9):
00235 #if (_MSC_VER > 1600)
00236 #  if defined(BOOST_ASSERT_CONFIG)
00237 #     error "Unknown compiler version - please run the configure tests and report the results"
00238 #  else
00239 #     pragma message("Unknown compiler version - please run the configure tests and report the results")
00240 #  endif
00241 #endif


appl
Author(s): petercai
autogenerated on Tue Jan 7 2014 11:02:29