Fixed uncaught_exceptions usage with clang

For some reason clang seems so believe uncaught_exceptions does not belong to the std namespace:

no member named 'uncaught_exceptions' in namespace 'std'; did you mean
      simply 'uncaught_exceptions'?

I haven't found any indication confirming this, but let's just support both…
This commit is contained in:
Mathieu Champlon 2018-03-25 17:02:58 +02:00 committed by Mathieu Champlon
parent 9e572eca3e
commit b8e8b6ffbf
3 changed files with 6 additions and 5 deletions

View file

@ -94,7 +94,7 @@
# endif
#endif
#if defined(__cplusplus) && (__cplusplus >= 201703L) || \
#if defined(__cpp_lib_uncaught_exceptions) || \
defined(_MSC_VER) && (_MSC_VER >= 1900)
# ifndef MOCK_NO_UNCAUGHT_EXCEPTIONS
# define MOCK_UNCAUGHT_EXCEPTIONS

View file

@ -87,10 +87,11 @@ namespace detail
E* e_;
};
inline int uncaught_exceptions()
inline int exceptions()
{
#ifdef MOCK_UNCAUGHT_EXCEPTIONS
return std::uncaught_exceptions();
using namespace std;
return uncaught_exceptions();
#else
return std::uncaught_exception() ? 1 : 0;
#endif

View file

@ -43,12 +43,12 @@ namespace detail
function_impl()
: context_( 0 )
, valid_( true )
, exceptions_( exceptions() )
, mutex_( boost::make_shared< mutex >() )
, exceptions_( uncaught_exceptions() )
{}
virtual ~function_impl()
{
if( valid_ && exceptions_ >= uncaught_exceptions() )
if( valid_ && exceptions_ >= exceptions() )
for( expectations_cit it = expectations_.begin();
it != expectations_.end(); ++it )
if( ! it->verify() )