diff options
author | Jonathan Wakely <jwakely.gcc@gmail.com> | 2012-08-03 00:27:48 +0000 |
---|---|---|
committer | Jonathan Wakely <redi@gcc.gnu.org> | 2012-08-03 01:27:48 +0100 |
commit | 6e48db73ed88eeb3e1025b28aa49c4f5ee4f3a76 (patch) | |
tree | f1173ab656fbe2a4579047297db9a6d0fcea6a48 /libstdc++-v3/include | |
parent | cbd782e1af15637c364840ee8bb2515d66cb8b5d (diff) | |
download | gcc-6e48db73ed88eeb3e1025b28aa49c4f5ee4f3a76.zip gcc-6e48db73ed88eeb3e1025b28aa49c4f5ee4f3a76.tar.gz gcc-6e48db73ed88eeb3e1025b28aa49c4f5ee4f3a76.tar.bz2 |
memory: Include auto_ptr.h later.
* include/std/memory: Include auto_ptr.h later.
* include/bits/shared_ptr.h (shared_ptr(auto_ptr<_Up>&&): Remove
definition.
* include/bits/shared_ptr_base.h (__shared_ptr(auto_ptr<_Up>&&):
Likewise.
* include/bits/unique_ptr.h (unique_ptr(auto_ptr<_Up>&&): Likewise.
* include/backward/auto_ptr.h (unique_ptr(auto_ptr<_Up>&&): Define.
(shared_ptr(auto_ptr<_Up>&&, __shared_ptr(auto_ptr<_Up>&&): Likewise.
* include/std/future: Reduce header dependencies.
* testsuite/20_util/default_delete/48631_neg.cc: Adjust dg-error line
numbers.
* testsuite/20_util/shared_ptr/cons/43820_neg.cc: Likewise.
* testsuite/20_util/unique_ptr/assign/48635_neg.cc: Likewise.
From-SVN: r190109
Diffstat (limited to 'libstdc++-v3/include')
-rw-r--r-- | libstdc++-v3/include/backward/auto_ptr.h | 36 | ||||
-rw-r--r-- | libstdc++-v3/include/bits/shared_ptr.h | 5 | ||||
-rw-r--r-- | libstdc++-v3/include/bits/shared_ptr_base.h | 21 | ||||
-rw-r--r-- | libstdc++-v3/include/bits/unique_ptr.h | 9 | ||||
-rw-r--r-- | libstdc++-v3/include/std/future | 8 | ||||
-rw-r--r-- | libstdc++-v3/include/std/memory | 8 |
6 files changed, 58 insertions, 29 deletions
diff --git a/libstdc++-v3/include/backward/auto_ptr.h b/libstdc++-v3/include/backward/auto_ptr.h index 3c91c08..01702f7 100644 --- a/libstdc++-v3/include/backward/auto_ptr.h +++ b/libstdc++-v3/include/backward/auto_ptr.h @@ -1,6 +1,6 @@ // auto_ptr implementation -*- C++ -*- -// Copyright (C) 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc. +// Copyright (C) 2007-2012 Free Software Foundation, Inc. // // This file is part of the GNU ISO C++ Library. This library is free // software; you can redistribute it and/or modify it under the @@ -289,6 +289,40 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION typedef void element_type; } _GLIBCXX_DEPRECATED; +#ifdef __GXX_EXPERIMENTAL_CXX0X__ + template<_Lock_policy _Lp> + template<typename _Tp> + inline + __shared_count<_Lp>::__shared_count(std::auto_ptr<_Tp>&& __r) + : _M_pi(new _Sp_counted_ptr<_Tp*, _Lp>(__r.get())) + { __r.release(); } + + template<typename _Tp, _Lock_policy _Lp> + template<typename _Tp1> + inline + __shared_ptr<_Tp, _Lp>::__shared_ptr(std::auto_ptr<_Tp1>&& __r) + : _M_ptr(__r.get()), _M_refcount() + { + __glibcxx_function_requires(_ConvertibleConcept<_Tp1*, _Tp*>) + static_assert( sizeof(_Tp1) > 0, "incomplete type" ); + _Tp1* __tmp = __r.get(); + _M_refcount = __shared_count<_Lp>(std::move(__r)); + __enable_shared_from_this_helper(_M_refcount, __tmp, __tmp); + } + + template<typename _Tp> + template<typename _Tp1> + inline + shared_ptr<_Tp>::shared_ptr(std::auto_ptr<_Tp1>&& __r) + : __shared_ptr<_Tp>(std::move(__r)) { } + + template<typename _Tp, typename _Dp> + template<typename _Up, typename> + inline + unique_ptr<_Tp, _Dp>::unique_ptr(auto_ptr<_Up>&& __u) noexcept + : _M_t(__u.release(), deleter_type()) { } +#endif + _GLIBCXX_END_NAMESPACE_VERSION } // namespace diff --git a/libstdc++-v3/include/bits/shared_ptr.h b/libstdc++-v3/include/bits/shared_ptr.h index 070d2d1..e1c1eb9 100644 --- a/libstdc++-v3/include/bits/shared_ptr.h +++ b/libstdc++-v3/include/bits/shared_ptr.h @@ -1,6 +1,6 @@ // shared_ptr and weak_ptr implementation -*- C++ -*- -// Copyright (C) 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc. +// Copyright (C) 2007-2012 Free Software Foundation, Inc. // // This file is part of the GNU ISO C++ Library. This library is free // software; you can redistribute it and/or modify it under the @@ -250,8 +250,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION #if _GLIBCXX_USE_DEPRECATED template<typename _Tp1> - shared_ptr(std::auto_ptr<_Tp1>&& __r) - : __shared_ptr<_Tp>(std::move(__r)) { } + shared_ptr(std::auto_ptr<_Tp1>&& __r); #endif template<typename _Tp1, typename _Del> diff --git a/libstdc++-v3/include/bits/shared_ptr_base.h b/libstdc++-v3/include/bits/shared_ptr_base.h index 39449f1..1ccd5ef 100644 --- a/libstdc++-v3/include/bits/shared_ptr_base.h +++ b/libstdc++-v3/include/bits/shared_ptr_base.h @@ -1,7 +1,6 @@ // shared_ptr and weak_ptr implementation details -*- C++ -*- -// Copyright (C) 2007, 2008, 2009, 2010, 2011, 2012 -// Free Software Foundation, Inc. +// Copyright (C) 2007-2012 Free Software Foundation, Inc. // // This file is part of the GNU ISO C++ Library. This library is free // software; you can redistribute it and/or modify it under the @@ -54,6 +53,10 @@ namespace std _GLIBCXX_VISIBILITY(default) { _GLIBCXX_BEGIN_NAMESPACE_VERSION +#if _GLIBCXX_USE_DEPRECATED + template<typename> class auto_ptr; +#endif + /** * @brief Exception possibly thrown by @c shared_ptr. * @ingroup exceptions @@ -537,9 +540,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION // Special case for auto_ptr<_Tp> to provide the strong guarantee. template<typename _Tp> explicit - __shared_count(std::auto_ptr<_Tp>&& __r) - : _M_pi(new _Sp_counted_ptr<_Tp*, _Lp>(__r.get())) - { __r.release(); } + __shared_count(std::auto_ptr<_Tp>&& __r); #endif // Special case for unique_ptr<_Tp,_Del> to provide the strong guarantee. @@ -859,15 +860,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION #if _GLIBCXX_USE_DEPRECATED // Postcondition: use_count() == 1 and __r.get() == 0 template<typename _Tp1> - __shared_ptr(std::auto_ptr<_Tp1>&& __r) - : _M_ptr(__r.get()), _M_refcount() - { - __glibcxx_function_requires(_ConvertibleConcept<_Tp1*, _Tp*>) - static_assert( sizeof(_Tp1) > 0, "incomplete type" ); - _Tp1* __tmp = __r.get(); - _M_refcount = __shared_count<_Lp>(std::move(__r)); - __enable_shared_from_this_helper(_M_refcount, __tmp, __tmp); - } + __shared_ptr(std::auto_ptr<_Tp1>&& __r); #endif /* TODO: use delegating constructor */ diff --git a/libstdc++-v3/include/bits/unique_ptr.h b/libstdc++-v3/include/bits/unique_ptr.h index 0a12799..9b736d4 100644 --- a/libstdc++-v3/include/bits/unique_ptr.h +++ b/libstdc++-v3/include/bits/unique_ptr.h @@ -1,6 +1,6 @@ // unique_ptr implementation -*- C++ -*- -// Copyright (C) 2008, 2009, 2010, 2011 Free Software Foundation, Inc. +// Copyright (C) 2008-2012 Free Software Foundation, Inc. // // This file is part of the GNU ISO C++ Library. This library is free // software; you can redistribute it and/or modify it under the @@ -45,6 +45,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION * @{ */ +#if _GLIBCXX_USE_DEPRECATED + template<typename> class auto_ptr; +#endif + /// Primary template, default_delete. template<typename _Tp> struct default_delete @@ -161,8 +165,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION std::enable_if<std::is_convertible<_Up*, _Tp*>::value && std::is_same<_Dp, default_delete<_Tp>>::value>::type> - unique_ptr(auto_ptr<_Up>&& __u) noexcept - : _M_t(__u.release(), deleter_type()) { } + unique_ptr(auto_ptr<_Up>&& __u) noexcept; #endif // Destructor. diff --git a/libstdc++-v3/include/std/future b/libstdc++-v3/include/std/future index 962400b..a8d7112 100644 --- a/libstdc++-v3/include/std/future +++ b/libstdc++-v3/include/std/future @@ -1,6 +1,6 @@ // <future> -*- C++ -*- -// Copyright (C) 2009, 2010, 2011, 2012 Free Software Foundation, Inc. +// Copyright (C) 2009-2012 Free Software Foundation, Inc. // // This file is part of the GNU ISO C++ Library. This library is free // software; you can redistribute it and/or modify it under the @@ -36,14 +36,16 @@ #else #include <functional> -#include <memory> #include <mutex> #include <thread> #include <condition_variable> #include <system_error> -#include <exception> #include <atomic> #include <bits/functexcept.h> +#include <bits/unique_ptr.h> +#include <bits/shared_ptr.h> +#include <bits/uses_allocator.h> +#include <bits/alloc_traits.h> namespace std _GLIBCXX_VISIBILITY(default) { diff --git a/libstdc++-v3/include/std/memory b/libstdc++-v3/include/std/memory index e846eba..73482ff 100644 --- a/libstdc++-v3/include/std/memory +++ b/libstdc++-v3/include/std/memory @@ -1,8 +1,6 @@ // <memory> -*- C++ -*- -// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, -// 2009, 2010, 2011 -// Free Software Foundation, Inc. +// Copyright (C) 2001-2012 Free Software Foundation, Inc. // // This file is part of the GNU ISO C++ Library. This library is free // software; you can redistribute it and/or modify it under the @@ -80,11 +78,11 @@ # include <type_traits> # include <functional> # include <debug/debug.h> +# include <bits/unique_ptr.h> +# include <bits/shared_ptr.h> # if _GLIBCXX_USE_DEPRECATED # include <backward/auto_ptr.h> # endif -# include <bits/unique_ptr.h> -# include <bits/shared_ptr.h> #else # include <backward/auto_ptr.h> #endif |