blob: d59f0a47be4b2ec8c1edec1cba766e68cfee5399 [file] [log] [blame]
/***************************************************************************
*
* _config-msvc.h - Microsoft Visual C++ configuration definitions
*
* This is an internal header file used to implement the C++ Standard
* Library. It should never be #included directly by a program.
*
* $Id$
*
***************************************************************************
*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed
* with this work for additional information regarding copyright
* ownership. The ASF licenses this file to you under the Apache
* License, Version 2.0 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy of
* the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
* implied. See the License for the specific language governing
* permissions and limitations under the License.
*
* Copyright 1994-2006 Rogue Wave Software, Inc.
*
**************************************************************************/
#include "_config-msvcrt.h"
#if _MSC_VER <= 1300 // MSVC <= 7.0
# define _RWSTD_NO_PTR_VALUE_TEMPLATE_OVERLOAD
# define _RWSTD_NO_PRAGMA_INSTANTIATE
// disable explicit instantiation extensions if building
// optimized client code (all templates still explicitly
// instantiated in the library);
// *** Not currently done for MSVC 7, since an implicit
// instantiation bug causes multiply defined symbols
// in downstream libraries
# ifndef _RWSTD_NO_STRING_NPOS_TYPE
// define basic_string::npos to be of type size_t
// instead of basic_string::size_type to work around
// an MSVC 7.0 bug (PR #26549)
# define _RWSTD_NO_STRING_NPOS_TYPE
# endif // _RWSTD_NO_STRING_NPOS_TYPE
#endif // MSVC <= 7.0
// disable "Same type qualifier used more than once"
#pragma warning (disable: 4114)
// disable "return type for operator->' is not a UDT"
#pragma warning (disable: 4284)
// disable "nonstandard extension used :"
// "'extern' before template explicit instantiation"
#pragma warning (disable: 4231)
// RWDLL - defined for all Rogue Wave(R) products built as shared libs
// _RWSHARED - defined for libstd built/used as a shared lib
#if defined (RWDLL) || defined (_RWSHARED)
// disable "class needs to have dll-interface to be used by cliens"
# pragma warning (disable: 4251)
// disable "non dll-interface class used as base for dll-interface class"
# pragma warning (disable: 4275)
#endif // RWDLL || _RWSHARED
// disable "decorated name length exceeded"
#pragma warning (disable: 4503)
// convert warning "'identifier' used on polymorphic type 'type' with /GR-;"
// "unpredictable behavior may result" to error
#pragma warning (error: 4541)
// disable "'identifier' : no suitable definition"
// "provided for explicit template instantiation request"
#pragma warning (disable: 4661)
// disable "identifier was truncated to 255 characters"
#pragma warning (disable: 4786)
// disable "'function': was declared deprecated"
#pragma warning (disable: 4996)
// MSVC __declspec(noreturn) indicates that a function doesn't return
// see: http://msdn.microsoft.com/en-us/library/aa235362(VS.60).aspx
#define _RWSTD_NORETURN __declspec (noreturn)