X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/2bb3c0c0dd3ae16c5d7ad50a10b10386cbdc529a..710b82f34da942186fc816a4b0d99962140c1ac3:/include/wx/scopeguard.h diff --git a/include/wx/scopeguard.h b/include/wx/scopeguard.h index 0bb390d130..f1f5a8204c 100644 --- a/include/wx/scopeguard.h +++ b/include/wx/scopeguard.h @@ -51,8 +51,14 @@ #else +#if !defined(__GNUC__) || wxCHECK_GCC_VERSION(2, 95) +// namespace support was first implemented in gcc-2.95, +// so avoid using it for older versions. namespace wxPrivate { +#else +#define wxPrivate +#endif // in the original implementation this was a member template function of // ScopeGuardImplBase but gcc 2.8 which is still used for OS/2 doesn't // support member templates and so we must make it global @@ -75,7 +81,9 @@ namespace wxPrivate void Use(const T& WXUNUSED(t)) { } +#if !defined(__GNUC__) || wxCHECK_GCC_VERSION(2, 95) } // namespace wxPrivate +#endif #define wxPrivateOnScopeExit(n) wxPrivate::OnScopeExit(n) #define wxPrivateUse(n) wxPrivate::Use(n) @@ -95,6 +103,12 @@ class wxScopeGuardImplBase public: wxScopeGuardImplBase() : m_wasDismissed(false) { } + wxScopeGuardImplBase(const wxScopeGuardImplBase& other) + : m_wasDismissed(other.m_wasDismissed) + { + other.Dismiss(); + } + void Dismiss() const { m_wasDismissed = true; } // for OnScopeExit() only (we can't make it friend, unfortunately)! @@ -103,12 +117,6 @@ public: protected: ~wxScopeGuardImplBase() { } - wxScopeGuardImplBase(const wxScopeGuardImplBase& other) - : m_wasDismissed(other.m_wasDismissed) - { - other.Dismiss(); - } - // must be mutable for copy ctor to work mutable bool m_wasDismissed;