config/test/boost_no_ret_det.ipp
2016-03-26 18:20:19 +00:00

44 lines
1.0 KiB
C++

// (C) Copyright John Maddock 2001.
// 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 the most recent version.
// MACRO: BOOST_NO_UNREACHABLE_RETURN_DETECTION
// TITLE: detection of unreachable returns
// DESCRIPTION: If a return is unreachable, then no return
// statement should be required, however some
// compilers insist on it, while other issue a
// bunch of warnings if it is in fact present.
#if defined( BOOST_NO_EXCEPTIONS )
# include <stdlib.h>
#endif
namespace boost_no_unreachable_return_detection{
int checker()
{
#if defined( BOOST_NO_EXCEPTIONS ) && (!defined( _MSC_VER ) || defined(__clang__))
abort();
#else
throw 0;
#endif
// no return statement: we don't ever get here...
}
int check = 0;
int test()
{
if(check)
return checker();
return 0;
}
}