1// Copyright (c) 2009-2020 Vladimir Batov.
2// Use, modification and distribution are subject to the Boost Software License,
3// Version 1.0. See http://www.boost.org/LICENSE_1_0.txt.
4
5#ifndef BOOST_CONVERT_FORWARD_HPP
6#define BOOST_CONVERT_FORWARD_HPP
7
8#include <boost/config.hpp>
9#include <boost/version.hpp>
10#include <boost/optional.hpp>
11#include <type_traits>
12
13#if defined(BOOST_NO_CXX14)
14#undef BOOST_CONVERT_CXX14
15#else
16#define BOOST_CONVERT_CXX14
17#endif
18
19// Intel 12.0 and lower have broken SFINAE
20#if defined(BOOST_INTEL) && (BOOST_INTEL <= 1200)
21#undef BOOST_CONVERT_CXX14
22#endif
23
24// No C++11 support
25#if defined(__GNUC__) && (__GNUC__ < 6)
26#undef BOOST_CONVERT_CXX14
27#endif
28
29// MSVC-11 and lower have broken SFINAE
30#if defined(_MSVC_VER) && (_MSVC_VER < 1800)
31#undef BOOST_CONVERT_CXX14
32#endif
33
34#if defined(_MSC_VER)
35
36//MSVC++ 7.0 _MSC_VER == 1300
37//MSVC++ 7.1 _MSC_VER == 1310 (Visual Studio 2003)
38//MSVC++ 8.0 _MSC_VER == 1400 (Visual Studio 2005)
39//MSVC++ 9.0 _MSC_VER == 1500 (Visual Studio 2008)
40//MSVC++ 10.0 _MSC_VER == 1600 (Visual Studio 2010)
41//MSVC++ 11.0 _MSC_VER == 1700 (Visual Studio 2012)
42//MSVC++ 12.0 _MSC_VER == 1800 (Visual Studio 2013)
43//MSVC++ 14.0 _MSC_VER == 1900 (Visual Studio 2015)
44//MSVC++ 15.0 _MSC_VER == 1910 (Visual Studio 2017)
45
46# pragma warning(disable: 4100) // unreferenced formal parameter
47# pragma warning(disable: 4146) // unary minus operator applied to unsigned type
48# pragma warning(disable: 4180) // qualifier applied to function type has no meaning
49# pragma warning(disable: 4224)
50# pragma warning(disable: 4244)
51# pragma warning(disable: 4800) // forcing value to bool
52# pragma warning(disable: 4996)
53
54#if _MSC_VER < 1900 /* MSVC-14 defines real snprintf()... just about time! */
55# define snprintf _snprintf
56#endif
57
58#endif
59
60#endif // BOOST_CONVERT_FORWARD_HPP
61

source code of boost/libs/convert/include/boost/convert/detail/config.hpp