1540d2a8bSDimitry Andric// -*- C++ -*- 2540d2a8bSDimitry Andric//===----------------------------------------------------------------------===// 3540d2a8bSDimitry Andric// 4540d2a8bSDimitry Andric// The LLVM Compiler Infrastructure 5540d2a8bSDimitry Andric// 6540d2a8bSDimitry Andric// This file is dual licensed under the MIT and the University of Illinois Open 7540d2a8bSDimitry Andric// Source Licenses. See LICENSE.TXT for details. 8540d2a8bSDimitry Andric// 9540d2a8bSDimitry Andric//===----------------------------------------------------------------------===// 10540d2a8bSDimitry Andric 11540d2a8bSDimitry Andric#ifndef _LIBCPPABI_VERSION 12540d2a8bSDimitry Andric#error this header can only be used with libc++abi 13540d2a8bSDimitry Andric#endif 14540d2a8bSDimitry Andric 15540d2a8bSDimitry Andricnamespace std { 16540d2a8bSDimitry Andric 17540d2a8bSDimitry Andricbool uncaught_exception() _NOEXCEPT { return uncaught_exceptions() > 0; } 18540d2a8bSDimitry Andric 19540d2a8bSDimitry Andricint uncaught_exceptions() _NOEXCEPT 20540d2a8bSDimitry Andric{ 21*6ccc06f6SDimitry Andric# if _LIBCPPABI_VERSION > 1001 22540d2a8bSDimitry Andric return __cxa_uncaught_exceptions(); 23540d2a8bSDimitry Andric# else 24540d2a8bSDimitry Andric return __cxa_uncaught_exception() ? 1 : 0; 25540d2a8bSDimitry Andric# endif 26540d2a8bSDimitry Andric} 27540d2a8bSDimitry Andric 28540d2a8bSDimitry Andric} // namespace std 29