// Copyright Antony Polukhin, 2016-2026.
//
// Distributed under 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)
#include
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//[getting_started_class_traced
#include
#include
typedef boost::error_info traced;
//]
//[getting_started_class_with_trace
template
void throw_with_trace(const E& e) {
throw boost::enable_error_info(e)
= 4)
throw_with_trace(std::out_of_range("'i' must be less than 4 in oops()"));
if (i = 0) {
foo(a[i]);
} else {
oops(i);
}
}
std::exit(2);
}
BOOST_NOINLINE void foo(int i) {
bar(--i);
}
#include
int main() {
//[getting_started_catching_trace
try {
foo(5); // testing assert handler
} catch (const std::exception& e) {
std::cerr