1 // Copyright (c) 2009-2016 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 12 #if defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) || defined(BOOST_NO_CXX11_RVALUE_REFERENCES) 13 #undef BOOST_CONVERT_CXX11 14 #else 15 #define BOOST_CONVERT_CXX11 16 #endif 17 18 // Intel 12.0 and lower have broken SFINAE 19 #if defined(BOOST_INTEL) && (BOOST_INTEL <= 1200) 20 # define BOOST_CONVERT_IS_NOT_SUPPORTED 21 #endif 22 23 // No C++11 support 24 #if defined(BOOST_GCC_VERSION) && (BOOST_GCC_VERSION <= 40600) 25 # define BOOST_CONVERT_IS_NOT_SUPPORTED 26 #endif 27 28 // MSVC-11 and lower have broken SFINAE 29 #if defined(BOOST_MSVC) && (BOOST_MSVC < 1800) 30 # define BOOST_CONVERT_IS_NOT_SUPPORTED 31 #endif 32 33 #if defined(_MSC_VER) 34 35 //MSVC++ 7.0 _MSC_VER == 1300 36 //MSVC++ 7.1 _MSC_VER == 1310 (Visual Studio 2003) 37 //MSVC++ 8.0 _MSC_VER == 1400 (Visual Studio 2005) 38 //MSVC++ 9.0 _MSC_VER == 1500 (Visual Studio 2008) 39 //MSVC++ 10.0 _MSC_VER == 1600 (Visual Studio 2010) 40 //MSVC++ 11.0 _MSC_VER == 1700 (Visual Studio 2012) 41 //MSVC++ 12.0 _MSC_VER == 1800 (Visual Studio 2013) 42 //MSVC++ 14.0 _MSC_VER == 1900 (Visual Studio 2015) 43 //MSVC++ 15.0 _MSC_VER == 1910 (Visual Studio 2017) 44 45 # pragma warning(disable: 4244) 46 # pragma warning(disable: 4224) 47 # pragma warning(disable: 4996) 48 # pragma warning(disable: 4180) // qualifier applied to function type has no meaning 49 # pragma warning(disable: 4100) // unreferenced formal parameter 50 # pragma warning(disable: 4146) // unary minus operator applied to unsigned type 51 52 #if _MSC_VER < 1900 /* MSVC-14 defines real snprintf()... just about time! */ 53 # define snprintf _snprintf 54 #endif 55 56 #endif 57 58 #endif // BOOST_CONVERT_FORWARD_HPP 59