diff options
author | Jonathan Wakely <redi@gcc.gnu.org> | 2005-02-28 21:43:51 +0000 |
---|---|---|
committer | Jonathan Wakely <redi@gcc.gnu.org> | 2005-02-28 21:43:51 +0000 |
commit | 52e806b77c43538bd59a8c86cbee22b59a9b374e (patch) | |
tree | ed3c50b712889fa5fc85d4449863cab117dc03dc /libstdc++-v3 | |
parent | c9aa2a6885f11fe4855fc643162f7ea2806f4452 (diff) | |
download | gcc-52e806b77c43538bd59a8c86cbee22b59a9b374e.zip gcc-52e806b77c43538bd59a8c86cbee22b59a9b374e.tar.gz gcc-52e806b77c43538bd59a8c86cbee22b59a9b374e.tar.bz2 |
memory: Replace checked_deleter with (unchecked) _Sp_deleter as GCC warns about delete...
* include/tr1/memory: Replace checked_deleter with (unchecked)
_Sp_deleter as GCC warns about delete on incomplete types anyway.
From-SVN: r95699
Diffstat (limited to 'libstdc++-v3')
-rw-r--r-- | libstdc++-v3/ChangeLog | 5 | ||||
-rw-r--r-- | libstdc++-v3/include/tr1/memory | 29 |
2 files changed, 11 insertions, 23 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index bac3a5e..68b1e13 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,5 +1,10 @@ 2005-02-28 Jonathan Wakely <redi@gcc.gnu.org> + * include/tr1/memory: Replace checked_deleter with (unchecked) + _Sp_deleter as GCC warns about delete on incomplete types anyway. + +2005-02-28 Jonathan Wakely <redi@gcc.gnu.org> + * include/tr1/memory: Add missing "inline" to __throw_bad_weak_ptr. 2005-02-28 Hans-Peter Nilsson <hp@axis.com> diff --git a/libstdc++-v3/include/tr1/memory b/libstdc++-v3/include/tr1/memory index cfae38d..64e2a90 100644 --- a/libstdc++-v3/include/tr1/memory +++ b/libstdc++-v3/include/tr1/memory @@ -27,11 +27,6 @@ // invalidate any other reasons why the executable file might be covered by // the GNU General Public License. -// boost/checked_delete.hpp -// Copyright (c) 2002, 2003 Peter Dimov -// Copyright (c) 2003 Daniel Frey -// Copyright (c) 2003 Howard Hinnant - // boost/shared_count.hpp // Copyright (c) 2001, 2002, 2003 Peter Dimov and Multi Media Ltd. @@ -92,27 +87,15 @@ __throw_bad_weak_ptr() } -// verify that types are complete for increased safety - -template <typename _Tp> - inline void - checked_delete(_Tp * __x) - { - // intentionally complex - simplification causes regressions - typedef char type_must_be_complete[ sizeof(_Tp)? 1: -1 ]; - (void) sizeof(type_must_be_complete); - delete __x; - } - template <typename _Tp> - struct checked_deleter + struct _Sp_deleter { typedef void result_type; typedef _Tp* argument_type; void - operator()(_Tp * x) const - { std::tr1::checked_delete(x); } + operator()(_Tp* p) const + { delete p; } }; @@ -267,8 +250,8 @@ public: template <typename _Tp> explicit shared_count(std::auto_ptr<_Tp>& __r) - : _M_pi(new _Sp_counted_base_impl<_Tp*,checked_deleter<_Tp> >( - __r.get(), checked_deleter<_Tp>() + : _M_pi(new _Sp_counted_base_impl<_Tp*,_Sp_deleter<_Tp> >( + __r.get(), _Sp_deleter<_Tp>() )) { __r.release(); } @@ -506,7 +489,7 @@ template <typename _Tp> */ template <typename _Tp1> explicit shared_ptr(_Tp1* __p) - : _M_ptr(__p), _M_refcount(__p, checked_deleter<_Tp1>()) + : _M_ptr(__p), _M_refcount(__p, _Sp_deleter<_Tp1>()) { __glibcxx_function_requires(_ConvertibleConcept<_Tp1*, _Tp*>) // __glibcxx_function_requires(_CompleteConcept<_Tp1*>) |