File indexing completed on 2025-01-18 09:51:08
0001
0002
0003
0004
0005
0006 #ifndef BOOST_QVM_THROW_EXCEPTION
0007
0008 # define BOOST_QVM_THROW_EXCEPTION ::boost::qvm::throw_exception
0009
0010 # include <exception>
0011
0012 # ifndef BOOST_QVM_NO_EXCEPTIONS
0013 # if defined(__clang__) && !defined(__ibmxl__)
0014 # if !__has_feature(cxx_exceptions)
0015 # define BOOST_QVM_NO_EXCEPTIONS
0016 # endif
0017 # elif defined(__DMC__)
0018 # if !defined(_CPPUNWIND)
0019 # define BOOST_QVM_NO_EXCEPTIONS
0020 # endif
0021 # elif defined(__GNUC__) && !defined(__ibmxl__)
0022 # if !defined(__EXCEPTIONS)
0023 # define BOOST_QVM_NO_EXCEPTIONS
0024 # endif
0025 # elif defined(__KCC)
0026 # if !defined(_EXCEPTIONS)
0027 # define BOOST_QVM_NO_EXCEPTIONS
0028 # endif
0029 # elif defined(__CODEGEARC__)
0030 # if !defined(_CPPUNWIND) && !defined(__EXCEPTIONS)
0031 # define BOOST_QVM_NO_EXCEPTIONS
0032 # endif
0033 # elif defined(__BORLANDC__)
0034 # if !defined(_CPPUNWIND) && !defined(__EXCEPTIONS)
0035 # define BOOST_QVM_NO_EXCEPTIONS
0036 # endif
0037 # elif defined(__MWERKS__)
0038 # if !__option(exceptions)
0039 # define BOOST_QVM_NO_EXCEPTIONS
0040 # endif
0041 # elif defined(__IBMCPP__) && defined(__COMPILER_VER__) && defined(__MVS__)
0042 # if !defined(_CPPUNWIND) && !defined(__EXCEPTIONS)
0043 # define BOOST_QVM_NO_EXCEPTIONS
0044 # endif
0045 # elif defined(__ibmxl__)
0046 # if !__has_feature(cxx_exceptions)
0047 # define BOOST_QVM_NO_EXCEPTIONS
0048 # endif
0049 # elif defined(_MSC_VER)
0050
0051
0052 # if !defined(_CPPUNWIND)
0053 # define BOOST_QVM_NO_EXCEPTIONS
0054 # endif
0055 # endif
0056 # endif
0057
0058
0059
0060 # ifdef BOOST_NORETURN
0061 # define BOOST_QVM_NORETURN BOOST_NORETURN
0062 # else
0063 # if defined(_MSC_VER)
0064 # define BOOST_QVM_NORETURN __declspec(noreturn)
0065 # elif defined(__GNUC__)
0066 # define BOOST_QVM_NORETURN __attribute__ ((__noreturn__))
0067 # elif defined(__has_attribute) && defined(__SUNPRO_CC) && (__SUNPRO_CC > 0x5130)
0068 # if __has_attribute(noreturn)
0069 # define BOOST_QVM_NORETURN [[noreturn]]
0070 # endif
0071 # elif defined(__has_cpp_attribute)
0072 # if __has_cpp_attribute(noreturn)
0073 # define BOOST_QVM_NORETURN [[noreturn]]
0074 # endif
0075 # endif
0076 # endif
0077
0078 # if !defined(BOOST_QVM_NORETURN)
0079 # define BOOST_QVM_NORETURN
0080 # endif
0081
0082
0083
0084 # ifdef BOOST_QVM_NO_EXCEPTIONS
0085
0086 namespace boost
0087 {
0088 BOOST_QVM_NORETURN void throw_exception( std::exception const & );
0089 }
0090
0091 namespace boost { namespace qvm {
0092
0093 template <class T>
0094 BOOST_QVM_NORETURN void throw_exception( T const & e )
0095 {
0096 ::boost::throw_exception(e);
0097 }
0098
0099 } }
0100
0101 # else
0102
0103 namespace boost { namespace qvm {
0104
0105 template <class T>
0106 BOOST_QVM_NORETURN void throw_exception( T const & e )
0107 {
0108 throw e;
0109 }
0110
0111 } }
0112
0113 # endif
0114
0115 #endif