MSVC's throw() behaviour matches the C++11 noexcept, so use it

This allows code using methods marked Q_DECL_NOEXCEPT to benefit from
optimisations before MSVC supports the C++11 keyword. Even MSVC 2012
doesn't have it yet.

Using throw() in other compilers is not a good idea because they might
actually be implementing the C++ standard -- which is broken.

Change-Id: Id07ab4fe40a641583d5285d5abb536998bc419ba
Reviewed-by: Marius Storm-Olsen <marius.storm-olsen@nokia.com>
This commit is contained in:
Thiago Macieira 2012-08-02 22:17:27 +02:00 committed by Qt by Nokia
parent 38dc1f7597
commit 1adca80707

View File

@ -110,6 +110,10 @@
# define Q_COMPILER_VARIADIC_MACROS
# endif
// make sure that these aren't defined when Q_COMPILER_NOEXCEPT is defined
# define Q_DECL_NOEXCEPT throw()
# define Q_DECL_NOEXCEPT_EXPR(x)
#if defined(Q_CC_MSVC) && _MSC_VER >= 1600
# define Q_COMPILER_RVALUE_REFS
# define Q_COMPILER_AUTO_TYPE
@ -724,7 +728,7 @@
#ifdef Q_COMPILER_NOEXCEPT
# define Q_DECL_NOEXCEPT noexcept
# define Q_DECL_NOEXCEPT_EXPR(x) noexcept(x)
#else
#elif !defined(Q_DECL_NOEXCEPT)
# define Q_DECL_NOEXCEPT
# define Q_DECL_NOEXCEPT_EXPR(x)
#endif