From 39247fbb32d6e68125af0837bde5fcf7ebd29db6 Mon Sep 17 00:00:00 2001 From: Antony Polukhin Date: Sat, 29 Apr 2017 19:23:39 +0300 Subject: [PATCH] Fixed MSVC related compilation issues --- example/terminate_handler.cpp | 6 +----- include/boost/stacktrace/stacktrace.hpp | 13 ++++++++++--- 2 files changed, 11 insertions(+), 8 deletions(-) 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.