1 //  Copyright (c) 2020 John Maddock
2 //  Use, modification and distribution are subject to the
3 //  Boost Software License, Version 1.0. (See accompanying file
4 //  LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
5 
6 #ifndef BOOST_MATH_TOOLS_CXX03_WARN_HPP
7 #define BOOST_MATH_TOOLS_CXX03_WARN_HPP
8 
9 #include <boost/config/pragma_message.hpp>
10 
11 #if defined(BOOST_NO_CXX11_NOEXCEPT)
12 #  define BOOST_MATH_SHOW_CXX03_WARNING
13 #  define BOOST_MATH_CXX03_WARN_REASON "BOOST_NO_CXX11_NOEXCEPT"
14 #endif
15 #if defined(BOOST_NO_CXX11_NOEXCEPT) && !defined(BOOST_MATH_SHOW_CXX03_WARNING)
16 #  define BOOST_MATH_SHOW_CXX03_WARNING
17 #  define BOOST_MATH_CXX03_WARN_REASON "BOOST_NO_CXX11_NOEXCEPT"
18 #endif
19 #if defined(BOOST_NO_CXX11_NOEXCEPT) && !defined(BOOST_MATH_SHOW_CXX03_WARNING)
20 #  define BOOST_MATH_SHOW_CXX03_WARNING
21 #  define BOOST_MATH_CXX03_WARN_REASON "BOOST_NO_CXX11_NOEXCEPT"
22 #endif
23 #if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) && !defined(BOOST_MATH_SHOW_CXX03_WARNING)
24 #  define BOOST_MATH_SHOW_CXX03_WARNING
25 #  define BOOST_MATH_CXX03_WARN_REASON "BOOST_NO_CXX11_RVALUE_REFERENCES"
26 #endif
27 #if defined(BOOST_NO_SFINAE_EXPR) && !defined(BOOST_MATH_SHOW_CXX03_WARNING)
28 #  define BOOST_MATH_SHOW_CXX03_WARNING
29 #  define BOOST_MATH_CXX03_WARN_REASON "BOOST_NO_SFINAE_EXPR"
30 #endif
31 #if defined(BOOST_NO_CXX11_AUTO_DECLARATIONS) && !defined(BOOST_MATH_SHOW_CXX03_WARNING)
32 #  define BOOST_MATH_SHOW_CXX03_WARNING
33 #  define BOOST_MATH_CXX03_WARN_REASON "BOOST_NO_CXX11_AUTO_DECLARATIONS"
34 #endif
35 #if defined(BOOST_NO_CXX11_LAMBDAS) && !defined(BOOST_MATH_SHOW_CXX03_WARNING)
36 #  define BOOST_MATH_SHOW_CXX03_WARNING
37 #  define BOOST_MATH_CXX03_WARN_REASON "BOOST_NO_CXX11_LAMBDAS"
38 #endif
39 #if defined(BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX) && !defined(BOOST_MATH_SHOW_CXX03_WARNING)
40 #  define BOOST_MATH_SHOW_CXX03_WARNING
41 #  define BOOST_MATH_CXX03_WARN_REASON "BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX"
42 #endif
43 #if defined(BOOST_NO_CXX11_HDR_TUPLE) && !defined(BOOST_MATH_SHOW_CXX03_WARNING)
44 #  define BOOST_MATH_SHOW_CXX03_WARNING
45 #  define BOOST_MATH_CXX03_WARN_REASON "BOOST_NO_CXX11_HDR_TUPLE"
46 #endif
47 #if defined(BOOST_NO_CXX11_HDR_INITIALIZER_LIST) && !defined(BOOST_MATH_SHOW_CXX03_WARNING)
48 #  define BOOST_MATH_SHOW_CXX03_WARNING
49 #  define BOOST_MATH_CXX03_WARN_REASON "BOOST_NO_CXX11_HDR_INITIALIZER_LIST"
50 #endif
51 #if defined(BOOST_NO_CXX11_HDR_CHRONO) && !defined(BOOST_MATH_SHOW_CXX03_WARNING)
52 #  define BOOST_MATH_SHOW_CXX03_WARNING
53 #  define BOOST_MATH_CXX03_WARN_REASON "BOOST_NO_CXX11_HDR_CHRONO"
54 #endif
55 #if defined(BOOST_NO_CXX11_THREAD_LOCAL) && !defined(BOOST_MATH_SHOW_CXX03_WARNING)
56 #  define BOOST_MATH_SHOW_CXX03_WARNING
57 #  define BOOST_MATH_CXX03_WARN_REASON "BOOST_NO_CXX11_THREAD_LOCAL"
58 #endif
59 #if defined(BOOST_NO_CXX11_CONSTEXPR) && !defined(BOOST_MATH_SHOW_CXX03_WARNING)
60 #  define BOOST_MATH_SHOW_CXX03_WARNING
61 #  define BOOST_MATH_CXX03_WARN_REASON "BOOST_NO_CXX11_CONSTEXPR"
62 #endif
63 #if defined(BOOST_NO_CXX11_NULLPTR) && !defined(BOOST_MATH_SHOW_CXX03_WARNING)
64 #  define BOOST_MATH_SHOW_CXX03_WARNING
65 #  define BOOST_MATH_CXX03_WARN_REASON "BOOST_NO_CXX11_NULLPTR"
66 #endif
67 #if defined(BOOST_NO_CXX11_NUMERIC_LIMITS) && !defined(BOOST_MATH_SHOW_CXX03_WARNING)
68 #  define BOOST_MATH_SHOW_CXX03_WARNING
69 #  define BOOST_MATH_CXX03_WARN_REASON "BOOST_NO_CXX11_NUMERIC_LIMITS"
70 #endif
71 #if defined(BOOST_NO_CXX11_DECLTYPE) && !defined(BOOST_MATH_SHOW_CXX03_WARNING)
72 #  define BOOST_MATH_SHOW_CXX03_WARNING
73 #  define BOOST_MATH_CXX03_WARN_REASON "BOOST_NO_CXX11_DECLTYPE"
74 #endif
75 #if defined(BOOST_NO_CXX11_HDR_ARRAY) && !defined(BOOST_MATH_SHOW_CXX03_WARNING)
76 #  define BOOST_MATH_SHOW_CXX03_WARNING
77 #  define BOOST_MATH_CXX03_WARN_REASON "BOOST_NO_CXX11_HDR_ARRAY"
78 #endif
79 #if defined(BOOST_NO_CXX11_HDR_ATOMIC) && !defined(BOOST_MATH_SHOW_CXX03_WARNING)
80 #  define BOOST_MATH_SHOW_CXX03_WARNING
81 #  define BOOST_MATH_CXX03_WARN_REASON "BOOST_NO_CXX11_HDR_ATOMIC"
82 #endif
83 #if defined(BOOST_NO_CXX11_ALLOCATOR) && !defined(BOOST_MATH_SHOW_CXX03_WARNING)
84 #  define BOOST_MATH_SHOW_CXX03_WARNING
85 #  define BOOST_MATH_CXX03_WARN_REASON "BOOST_NO_CXX11_ALLOCATOR"
86 #endif
87 #if defined(BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS) && !defined(BOOST_MATH_SHOW_CXX03_WARNING)
88 #  define BOOST_MATH_SHOW_CXX03_WARNING
89 #  define BOOST_MATH_CXX03_WARN_REASON "BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS"
90 #endif
91 
92 #ifdef BOOST_MATH_SHOW_CXX03_WARNING
93 //
94 // The above list includes everything we use, plus a few we're likely to use soon.
95 // As from March 2020, C++03 support is deprecated, and as from March 2021 will be removed,
96 // so mark up as such:
97 //
98 #if (defined(_MSC_VER) || defined(__GNUC__)) && !defined(BOOST_MATH_DISABLE_DEPRECATED_03_WARNING)
99 BOOST_PRAGMA_MESSAGE("CAUTION: One or more C++11 features were found to be unavailable")
100 BOOST_PRAGMA_MESSAGE("CAUTION: Compiling Boost.Math in pre-C++11 conformance modes is now deprecated and will be removed from March 2021.")
101 BOOST_PRAGMA_MESSAGE("CAUTION: Define BOOST_MATH_DISABLE_DEPRECATED_03_WARNING to suppress this message.")
102 BOOST_PRAGMA_MESSAGE("CAUTION: This message was generated due to the define: " BOOST_MATH_CXX03_WARN_REASON)
103 #endif
104 #endif
105 
106 #endif
107