diff options
author | Karen Arutyunov <karen@codesynthesis.com> | 2016-06-28 13:00:14 +0300 |
---|---|---|
committer | Karen Arutyunov <karen@codesynthesis.com> | 2016-07-01 15:46:53 +0300 |
commit | ec7b7e37ce97d25adc209befb2c12cf16eb06ef1 (patch) | |
tree | bcb5b911b0d6579cf1d8c2e6ca4ac13383ca08f9 /build2/diagnostics | |
parent | 86db4fb7388285adc24e3aa6eb3f7ec68efd15f4 (diff) |
Port to MSVC
Diffstat (limited to 'build2/diagnostics')
-rw-r--r-- | build2/diagnostics | 27 |
1 files changed, 11 insertions, 16 deletions
diff --git a/build2/diagnostics b/build2/diagnostics index c0ba6ec..8aedf13 100644 --- a/build2/diagnostics +++ b/build2/diagnostics @@ -140,7 +140,7 @@ namespace build2 diag_record (const diag_mark<B>& m) : empty_ (true), epilogue_ (nullptr) { *this << m;} - ~diag_record () noexcept(false); + ~diag_record () noexcept (false); void append (diag_epilogue e) const @@ -159,30 +159,25 @@ namespace build2 // Move constructible-only type. // - /* - @@ libstdc++ doesn't yet have the ostringstream move support. - + // Older versions of libstdc++ don't have the ostringstream move support + // and accuratly detecting its version is non-trivial. So we always use + // the pessimized implementation with libstdc++. Luckily, GCC doesn't seem + // to be needing move due to copy/move elision. + // diag_record (diag_record&& r) +#ifndef __GLIBCXX__ : os_ (move (r.os_)) - { - empty_ = r.empty_; - r.empty_ = true; - - epilogue_ = r.epilogue_; - r.epilogue_ = nullptr; - } - */ - - diag_record (diag_record&& r) +#endif { empty_ = r.empty_; epilogue_ = r.epilogue_; if (!empty_) { - assert (false); //@@ Stream verbosity will not be transferred. +#ifdef __GLIBCXX__ + stream_verb (os_, stream_verb (r.os_)); os_ << r.os_.str (); - +#endif r.empty_ = true; r.epilogue_ = nullptr; } |