forked from boostorg/assert
Add source_location_test5.cpp
This commit is contained in:
@ -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 ;
|
||||
|
44
test/source_location_test5.cpp
Normal file
44
test/source_location_test5.cpp
Normal file
@ -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 <boost/assert/source_location.hpp>
|
||||
#include <boost/core/lightweight_test.hpp>
|
||||
#include <exception>
|
||||
|
||||
template<class T> 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<int> r;
|
||||
BOOST_TEST_THROWS( r.value(), std::exception );
|
||||
return boost::report_errors();
|
||||
}
|
Reference in New Issue
Block a user