config/test/boost_no_cxx11_exception.ipp

48 lines
1.1 KiB
C++

// (C) Copyright Beman Dawes 2009
// Use, modification and distribution are subject to the
// Boost Software License, Version 1.0. (See accompanying file
// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
// See http://www.boost.org/libs/config for more information.
// MACRO: BOOST_NO_CXX11_HDR_EXCEPTION
// TITLE: C++11 header <exception> not compatible
// DESCRIPTION: The standard library does not provide a C++11 compatible version of <exception>.
#include <exception>
namespace boost_no_cxx11_hdr_exception {
int test()
{
#ifdef BOOST_NO_EXCEPTIONS
using std::exception_ptr;
using std::current_exception;
using std::rethrow_exception;
return 0;
#else
std::exception_ptr ep;
try
{
throw 42;
}
catch (...)
{
ep = std::current_exception();
}
try
{
std::rethrow_exception(ep);
}
catch (int i)
{
// return zero on success
return i == 42 ? 0 : 1;
}
return 1;
#endif
}
}