From ab39bb78a6b551635eb0cc0a18ccbef61ce17d10 Mon Sep 17 00:00:00 2001 From: Peter Dimov Date: Sat, 5 Feb 2022 08:03:55 +0200 Subject: [PATCH] Add source_location_test5.cpp --- test/Jamfile.v2 | 1 + test/source_location_test5.cpp | 44 ++++++++++++++++++++++++++++++++++ 2 files changed, 45 insertions(+) create mode 100644 test/source_location_test5.cpp diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 index 89d75bd..c869ff9 100644 --- a/test/Jamfile.v2 +++ b/test/Jamfile.v2 @@ -41,3 +41,4 @@ run source_location_test.cpp ; run source_location_test2.cpp ; run source_location_test3.cpp ; run source_location_test4.cpp ; +run source_location_test5.cpp ; diff --git a/test/source_location_test5.cpp b/test/source_location_test5.cpp new file mode 100644 index 0000000..ef8a0dc --- /dev/null +++ b/test/source_location_test5.cpp @@ -0,0 +1,44 @@ +// Copyright 2022 Peter Dimov +// Distributed under the Boost Software License, Version 1.0. +// http://www.boost.org/LICENSE_1_0.txt + +// Reduced from a boost::system::result test; codegen bug +// in GCC < 5 which is somehow triggered by __PRETTY_FUNCTION__ +// and throwing an exception + +#include +#include +#include + +template class result +{ +private: + + bool has_value_; + T value_; + +public: + + result(): has_value_( false ), value_() + { + } + + T value( boost::source_location const& /*loc*/ = BOOST_CURRENT_LOCATION ) const + { + if( has_value_ ) + { + return value_; + } + else + { + throw std::exception(); + } + } +}; + +int main() +{ + result r; + BOOST_TEST_THROWS( r.value(), std::exception ); + return boost::report_errors(); +}