diff --git a/example/terminate_handler.cpp b/example/terminate_handler.cpp index 8f1102b..b402e71 100644 --- a/example/terminate_handler.cpp +++ b/example/terminate_handler.cpp @@ -21,14 +21,10 @@ BOOST_NOINLINE void foo(int i) { bar(--i); } -#if defined(BOOST_GCC) && defined(BOOST_WINDOWS) - -// MinGW workaround +// MinGW and MSVC workarounds #include // ::_Exit namespace std { using ::_Exit; } -#endif - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //[getting_started_terminate_handlers diff --git a/include/boost/stacktrace/stacktrace.hpp b/include/boost/stacktrace/stacktrace.hpp index 7cabe70..0e8f287 100644 --- a/include/boost/stacktrace/stacktrace.hpp +++ b/include/boost/stacktrace/stacktrace.hpp @@ -176,16 +176,23 @@ public: ~basic_stacktrace() BOOST_NOEXCEPT = default; #endif -#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) && !defined(BOOST_NO_CXX11_DEFAULTED_FUNCTIONS) +#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) /// @b Complexity: O(1) /// /// @b Async-Handler-Safety: Safe if Allocator construction and copying are async signal safe. - basic_stacktrace(basic_stacktrace&& st) = default; + basic_stacktrace(basic_stacktrace&& st) BOOST_NOEXCEPT + : impl_(std::move(st.impl_)) + {} /// @b Complexity: O(st.size()) /// /// @b Async-Handler-Safety: Safe if Allocator construction and copying are async signal safe. - basic_stacktrace& operator=(basic_stacktrace&& st) = default; + basic_stacktrace& operator=(basic_stacktrace&& st) + BOOST_NOEXCEPT_IF(( std::is_nothrow_move_assignable< std::vector >::value )) + { + impl_ = std::move(st.impl_); + return *this; + } #endif /// @returns Number of function names stored inside the class.