Index: libopenmpt/libopenmpt.hpp
===================================================================
--- libopenmpt/libopenmpt.hpp	(revision 6595)
+++ libopenmpt/libopenmpt.hpp	(working copy)
@@ -117,9 +117,9 @@
 private:
 	char * text;
 public:
-	exception( const std::string & text ) throw();
-	virtual ~exception() throw();
-	virtual const char * what() const throw();
+	exception( const std::string & text ) LIBOPENMPT_NOEXCEPT;
+	virtual ~exception() LIBOPENMPT_NOEXCEPT;
+	virtual const char * what() const LIBOPENMPT_NOEXCEPT;
 }; // class exception
 
 //! Get the libopenmpt version number
Index: libopenmpt/libopenmpt_config.h
===================================================================
--- libopenmpt/libopenmpt_config.h	(revision 6595)
+++ libopenmpt/libopenmpt_config.h	(working copy)
@@ -178,6 +178,28 @@
 #endif
 #endif
 
+#ifdef __cplusplus
+#if defined(LIBOPENMPT_FORCE_NOEXCEPT_CXX98)
+#define LIBOPENMPT_NOEXCEPT throw()
+#elif defined(IBOPENMPT_FORCE_NOEXCEPT_CXX03)
+#define LIBOPENMPT_NOEXCEPT throw()
+#elif defined(IBOPENMPT_FORCE_NOEXCEPT_CXX11)
+#define LIBOPENMPT_NOEXCEPT noexcept
+#elif defined(IBOPENMPT_FORCE_NOEXCEPT_CXX14)
+#define LIBOPENMPT_NOEXCEPT noexcept
+#elif defined(IBOPENMPT_FORCE_NOEXCEPT_CXX17)
+#define LIBOPENMPT_NOEXCEPT noexcept
+#elif (__cplusplus >= 201402L)
+#define LIBOPENMPT_NOEXCEPT noexcept
+#elif (__cplusplus >= 201103L)
+#define LIBOPENMPT_NOEXCEPT noexcept
+#elif (__cplusplus >= 199711L)
+#define LIBOPENMPT_NOEXCEPT throw()
+#else
+#define LIBOPENMPT_NOEXCEPT throw()
+#endif
+#endif
+
 #include "libopenmpt_version.h"
 
 #endif /* LIBOPENMPT_CONFIG_H */
Index: libopenmpt/libopenmpt_cxx.cpp
===================================================================
--- libopenmpt/libopenmpt_cxx.cpp	(revision 6595)
+++ libopenmpt/libopenmpt_cxx.cpp	(working copy)
@@ -21,7 +21,7 @@
 
 namespace openmpt {
 
-exception::exception( const std::string & text ) throw()
+exception::exception( const std::string & text ) LIBOPENMPT_NOEXCEPT
 	: std::exception()
 	, text(0)
 {
@@ -31,7 +31,7 @@
 	}
 }
 
-exception::~exception() throw() {
+exception::~exception() LIBOPENMPT_NOEXCEPT {
 	if ( text ) {
 		std::free( text );
 		text = 0;
@@ -38,7 +38,7 @@
 	}
 }
 
-const char * exception::what() const throw() {
+const char * exception::what() const LIBOPENMPT_NOEXCEPT {
 	if ( text ) {
 		return text;
 	} else {
