2007-05-04 18:07:10 +00:00
|
|
|
// auto_ptr implementation -*- C++ -*-
|
2007-03-10 20:29:45 +00:00
|
|
|
|
2021-01-04 10:26:59 +01:00
|
|
|
// Copyright (C) 2007-2021 Free Software Foundation, Inc.
|
2007-03-10 20:29:45 +00:00
|
|
|
//
|
|
|
|
// 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
|
|
|
|
// terms of the GNU General Public License as published by the
|
2009-04-09 17:00:19 +02:00
|
|
|
// Free Software Foundation; either version 3, or (at your option)
|
2007-03-10 20:29:45 +00:00
|
|
|
// any later version.
|
|
|
|
|
|
|
|
// This library is distributed in the hope that it will be useful,
|
|
|
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
|
// GNU General Public License for more details.
|
|
|
|
|
2009-04-09 17:00:19 +02:00
|
|
|
// Under Section 7 of GPL version 3, you are granted additional
|
|
|
|
// permissions described in the GCC Runtime Library Exception, version
|
|
|
|
// 3.1, as published by the Free Software Foundation.
|
2007-03-10 20:29:45 +00:00
|
|
|
|
2009-04-09 17:00:19 +02:00
|
|
|
// You should have received a copy of the GNU General Public License and
|
|
|
|
// a copy of the GCC Runtime Library Exception along with this program;
|
|
|
|
// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
|
|
|
// <http://www.gnu.org/licenses/>.
|
2007-03-10 20:29:45 +00:00
|
|
|
|
2007-10-29 21:13:23 +00:00
|
|
|
/** @file backward/auto_ptr.h
|
2007-03-10 20:29:45 +00:00
|
|
|
* This is an internal header file, included by other library headers.
|
2011-02-01 01:31:42 +00:00
|
|
|
* Do not attempt to use it directly. @headername{memory}
|
2007-03-10 20:29:45 +00:00
|
|
|
*/
|
|
|
|
|
2010-03-16 22:34:53 +00:00
|
|
|
#ifndef _BACKWARD_AUTO_PTR_H
|
|
|
|
#define _BACKWARD_AUTO_PTR_H 1
|
2007-03-10 20:29:45 +00:00
|
|
|
|
2007-05-04 18:07:10 +00:00
|
|
|
#include <bits/c++config.h>
|
2007-03-10 20:29:45 +00:00
|
|
|
#include <debug/debug.h>
|
|
|
|
|
PR libstdc++/36104 part four
2011-01-30 Benjamin Kosnik <bkoz@redhat.com>
PR libstdc++/36104 part four
* include/bits/c++config (_GLIBCXX_STD): Remove.
(_GLIBCXX_STD_D, _GLIBCXX_PR): Now _GLIBCXX_STD_C.
(_GLIBCXX_P): Now _GLIBCXX_STD_A.
(_GLIBCXX_NAMESPACE_DEBUG, _GLIBCXX_NAMESPACE_PARALLEL,
_GLIBCXX_NAMESPACE_PROFILE, _GLIBCXX_NAMESPACE_VERSION): Remove.
(_GLIBCXX_INLINE_DEBUG, _GLIBCXX_INLINE_PARALLEL,
_GLIBCXX_INLINE_PROFILE): Remove.
(_GLIBCXX_BEGIN_NAMESPACE(X)): Remove.
(_GLIBCXX_END_NAMESPACE): Remove.
(_GLIBCXX_BEGIN_NESTED_NAMESPACE(X, Y)): Remove.
(_GLIBCXX_END_NESTED_NAMESPACE): Remove.
(_GLIBCXX_BEGIN_NAMESPACE_ALGO): Add.
(_GLIBCXX_END_NAMESPACE_ALGO): Add.
(_GLIBCXX_BEGIN_NAMESPACE_CONTAINER): Add.
(_GLIBCXX_END_NAMESPACE_CONTAINER): Add.
(_GLIBCXX_BEGIN_NAMESPACE_VERSION): Add.
(_GLIBCXX_END_NAMESPACE_VERSION): Add.
(_GLIBCXX_BEGIN_LDBL_NAMESPACE): To _GLIBCXX_BEGIN_NAMESPACE_LDBL.
(_GLIBCXX_END_LDBL_NAMESPACE): To _GLIBCXX_END_NAMESPACE_LDBL.
(_GLIBCXX_VISIBILITY_ATTR): Revert to _GLIBCXX_VISIBILITY.
* include/*: Use new macros for namespace scope.
* config/*: Same.
* src/*: Same.
* src/Makefile.am (sources): Remove debug_list.cc, add
compatibility-debug_list-2.cc.
(parallel_sources): Remove parallel_list.cc, add
compatibility-parallel_list-2.cc.
(compatibility-parallel_list-2.[o,lo]): New rule.
* src/Makefile.in: Regenerate.
* src/debug_list.cc: Remove.
* src/parallel_list.cc: Remove.
* src/compatibility-list-2.cc: New.
* src/compatibility-debug_list-2.cc: New.
* src/compatibility-parallel_list-2.cc: New.
* doc/doxygen/user.cfg.in: Adjust macros.
* testsuite/20_util/auto_ptr/assign_neg.cc: Adjust line numbers, macros.
* testsuite/20_util/declval/requirements/1_neg.cc: Same.
* testsuite/20_util/duration/requirements/typedefs_neg1.cc: Same.
* testsuite/20_util/duration/requirements/typedefs_neg2.cc: Same.
* testsuite/20_util/duration/requirements/typedefs_neg3.cc: Same.
* testsuite/20_util/forward/c_neg.cc: Same.
* testsuite/20_util/forward/f_neg.cc: Same.
* testsuite/20_util/make_signed/requirements/typedefs_neg.cc: Same.
* testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc: Same.
* testsuite/20_util/ratio/cons/cons_overflow_neg.cc: Same.
* testsuite/20_util/ratio/operations/ops_overflow_neg.cc: Same.
* testsuite/20_util/shared_ptr/cons/43820_neg.cc: Same.
* testsuite/20_util/weak_ptr/comparison/cmp_neg.cc: Same.
* testsuite/23_containers/deque/requirements/dr438/assign_neg.cc: Same.
* testsuite/23_containers/deque/requirements/dr438/
constructor_1_neg.cc: Same.
* testsuite/23_containers/deque/requirements/dr438/
constructor_2_neg.cc: Same.
* testsuite/23_containers/deque/requirements/dr438/insert_neg.cc: Same.
* testsuite/23_containers/forward_list/capacity/1.cc: Same.
* testsuite/23_containers/forward_list/requirements/dr438/
assign_neg.cc: Same.
* testsuite/23_containers/forward_list/requirements/dr438/
constructor_1_neg.cc: Same.
* testsuite/23_containers/forward_list/requirements/dr438/
constructor_2_neg.cc: Same.
* testsuite/23_containers/forward_list/requirements/dr438/
insert_neg.cc: Same.
* testsuite/23_containers/list/capacity/29134.cc: Same.
* testsuite/23_containers/list/requirements/dr438/assign_neg.cc: Same.
* testsuite/23_containers/list/requirements/dr438/
constructor_1_neg.cc: Same.
* testsuite/23_containers/list/requirements/dr438/
constructor_2_neg.cc: Same.
* testsuite/23_containers/list/requirements/dr438/insert_neg.cc: Same.
* testsuite/23_containers/vector/bool/capacity/29134.cc: Same.
* testsuite/23_containers/vector/bool/modifiers/insert/31370.cc: Same.
* testsuite/23_containers/vector/requirements/dr438/assign_neg.cc: Same.
* testsuite/23_containers/vector/requirements/dr438/
constructor_1_neg.cc: Same.
* testsuite/23_containers/vector/requirements/dr438/
constructor_2_neg.cc: Same.
* testsuite/23_containers/vector/requirements/dr438/insert_neg.cc: Same.
* testsuite/25_algorithms/sort/35588.cc: Same.
* testsuite/27_io/ios_base/cons/assign_neg.cc: Same.
* testsuite/27_io/ios_base/cons/copy_neg.cc: Same.
* testsuite/ext/profile/mutex_extensions_neg.cc: Same.
* testsuite/ext/profile/profiler_algos.cc: Same.
* testsuite/ext/type_traits/add_unsigned_floating_neg.cc: Same.
* testsuite/ext/type_traits/add_unsigned_integer_neg.cc: Same.
* testsuite/ext/type_traits/remove_unsigned_floating_neg.cc: Same.
* testsuite/ext/type_traits/remove_unsigned_integer_neg.cc: Same.
* testsuite/tr1/2_general_utilities/shared_ptr/cons/43820_neg.cc: Same.
From-SVN: r169421
2011-01-30 22:39:36 +00:00
|
|
|
namespace std _GLIBCXX_VISIBILITY(default)
|
|
|
|
{
|
|
|
|
_GLIBCXX_BEGIN_NAMESPACE_VERSION
|
2007-03-10 20:29:45 +00:00
|
|
|
|
|
|
|
/**
|
|
|
|
* A wrapper class to provide auto_ptr with reference semantics.
|
|
|
|
* For example, an auto_ptr can be assigned (or constructed from)
|
|
|
|
* the result of a function which returns an auto_ptr by value.
|
|
|
|
*
|
|
|
|
* All the auto_ptr_ref stuff should happen behind the scenes.
|
|
|
|
*/
|
|
|
|
template<typename _Tp1>
|
|
|
|
struct auto_ptr_ref
|
|
|
|
{
|
|
|
|
_Tp1* _M_ptr;
|
|
|
|
|
|
|
|
explicit
|
|
|
|
auto_ptr_ref(_Tp1* __p): _M_ptr(__p) { }
|
libstdc++: Add deprecated attributes to old iostream members
Back in 2017 I removed these prehistoric members (which were deprecated
since C++98) for C++17 mode. But I didn't add deprecated attributes to
most of them, so users didn't get any warning they would be going away.
Apparently some poor souls do actually use some of these names, and so
now that GCC 11 defaults to -std=gnu++17 some code has stopped
compiling.
This adds deprecated attributes to them, so that C++98/03/11/14 code
will get a warning if it uses them. I'll also backport this to the
release branches so that users can find out about the deprecation before
they start using C++17.
In order to give deprecated warnings even in C++98 mode this patch makes
_GLIBCXX_DEPRECATED work even for C++98, adds _GLIBCXX11_DEPRECATED for
the old meaning of _GLIBCXX_DEPRECATED, and adds new macros such as
_GLIBCXX_DEPRECATED_SUGGEST for suggesting alternatives to deprecated
features.
libstdc++-v3/ChangeLog:
* include/bits/c++config (_GLIBCXX_DEPRECATED): Define for all
standard modes.
(_GLIBCXX_DEPRECATED_SUGGEST): New macro for "use 'foo' instead"
message in deprecated warnings.
(_GLIBCXX11_DEPRECATED, _GLIBCXX11_DEPRECATED_SUGGEST): New
macros for marking features derpecated in C++11.
(_GLIBCXX17_DEPRECATED_SUGGEST, _GLIBCXX20_DEPRECATED_SUGGEST):
New macros.
* include/backward/auto_ptr.h (auto_ptr_ref, auto_ptr<void>):
Use _GLIBCXX11_DEPRECATED instead of _GLIBCXX_DEPRECATED.
(auto_ptr): Use _GLIBCXX11_DEPRECATED_SUGGEST.
* include/backward/binders.h (binder1st, binder2nd): Likewise.
* include/bits/ios_base.h (io_state, open_mode, seek_dir)
(streampos, streamoff): Use _GLIBCXX_DEPRECATED_SUGGEST.
* include/std/streambuf (stossc): Replace C++11 attribute
with _GLIBCXX_DEPRECATED_SUGGEST.
* include/std/type_traits (__is_nullptr_t): Use
_GLIBCXX_DEPRECATED_SUGGEST instead of _GLIBCXX_DEPRECATED.
* testsuite/27_io/types/1.cc: Check for deprecated warnings.
Also check for io_state, open_mode and seek_dir typedefs.
2020-08-19 12:13:03 +01:00
|
|
|
} _GLIBCXX11_DEPRECATED;
|
2007-03-10 20:29:45 +00:00
|
|
|
|
2017-04-21 14:08:51 +01:00
|
|
|
#pragma GCC diagnostic push
|
|
|
|
#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
|
2007-03-10 20:29:45 +00:00
|
|
|
|
|
|
|
/**
|
|
|
|
* @brief A simple smart pointer providing strict ownership semantics.
|
|
|
|
*
|
|
|
|
* The Standard says:
|
|
|
|
* <pre>
|
|
|
|
* An @c auto_ptr owns the object it holds a pointer to. Copying
|
|
|
|
* an @c auto_ptr copies the pointer and transfers ownership to the
|
|
|
|
* destination. If more than one @c auto_ptr owns the same object
|
|
|
|
* at the same time the behavior of the program is undefined.
|
|
|
|
*
|
|
|
|
* The uses of @c auto_ptr include providing temporary
|
|
|
|
* exception-safety for dynamically allocated memory, passing
|
|
|
|
* ownership of dynamically allocated memory to a function, and
|
|
|
|
* returning dynamically allocated memory from a function. @c
|
|
|
|
* auto_ptr does not meet the CopyConstructible and Assignable
|
|
|
|
* requirements for Standard Library <a
|
|
|
|
* href="tables.html#65">container</a> elements and thus
|
|
|
|
* instantiating a Standard Library container with an @c auto_ptr
|
|
|
|
* results in undefined behavior.
|
|
|
|
* </pre>
|
|
|
|
* Quoted from [20.4.5]/3.
|
|
|
|
*
|
|
|
|
* Good examples of what can and cannot be done with auto_ptr can
|
|
|
|
* be found in the libstdc++ testsuite.
|
|
|
|
*
|
|
|
|
* _GLIBCXX_RESOLVE_LIB_DEFECTS
|
|
|
|
* 127. auto_ptr<> conversion issues
|
|
|
|
* These resolutions have all been incorporated.
|
|
|
|
*/
|
|
|
|
template<typename _Tp>
|
|
|
|
class auto_ptr
|
|
|
|
{
|
|
|
|
private:
|
|
|
|
_Tp* _M_ptr;
|
|
|
|
|
|
|
|
public:
|
|
|
|
/// The pointed-to type.
|
|
|
|
typedef _Tp element_type;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @brief An %auto_ptr is usually constructed from a raw pointer.
|
2011-08-07 07:27:06 +00:00
|
|
|
* @param __p A pointer (defaults to NULL).
|
2007-03-10 20:29:45 +00:00
|
|
|
*
|
2011-08-07 07:27:06 +00:00
|
|
|
* This object now @e owns the object pointed to by @a __p.
|
2007-03-10 20:29:45 +00:00
|
|
|
*/
|
|
|
|
explicit
|
|
|
|
auto_ptr(element_type* __p = 0) throw() : _M_ptr(__p) { }
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @brief An %auto_ptr can be constructed from another %auto_ptr.
|
2011-08-07 07:27:06 +00:00
|
|
|
* @param __a Another %auto_ptr of the same type.
|
2007-03-10 20:29:45 +00:00
|
|
|
*
|
2011-08-07 07:27:06 +00:00
|
|
|
* This object now @e owns the object previously owned by @a __a,
|
2008-01-31 18:44:55 +00:00
|
|
|
* which has given up ownership.
|
2007-03-10 20:29:45 +00:00
|
|
|
*/
|
|
|
|
auto_ptr(auto_ptr& __a) throw() : _M_ptr(__a.release()) { }
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @brief An %auto_ptr can be constructed from another %auto_ptr.
|
2011-08-07 07:27:06 +00:00
|
|
|
* @param __a Another %auto_ptr of a different but related type.
|
2007-03-10 20:29:45 +00:00
|
|
|
*
|
|
|
|
* A pointer-to-Tp1 must be convertible to a
|
|
|
|
* pointer-to-Tp/element_type.
|
|
|
|
*
|
2011-08-07 07:27:06 +00:00
|
|
|
* This object now @e owns the object previously owned by @a __a,
|
2008-01-31 18:44:55 +00:00
|
|
|
* which has given up ownership.
|
2007-03-10 20:29:45 +00:00
|
|
|
*/
|
|
|
|
template<typename _Tp1>
|
|
|
|
auto_ptr(auto_ptr<_Tp1>& __a) throw() : _M_ptr(__a.release()) { }
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @brief %auto_ptr assignment operator.
|
2011-08-07 07:27:06 +00:00
|
|
|
* @param __a Another %auto_ptr of the same type.
|
2007-03-10 20:29:45 +00:00
|
|
|
*
|
2011-08-07 07:27:06 +00:00
|
|
|
* This object now @e owns the object previously owned by @a __a,
|
2008-01-31 18:44:55 +00:00
|
|
|
* which has given up ownership. The object that this one @e
|
2007-03-10 20:29:45 +00:00
|
|
|
* used to own and track has been deleted.
|
|
|
|
*/
|
|
|
|
auto_ptr&
|
|
|
|
operator=(auto_ptr& __a) throw()
|
|
|
|
{
|
|
|
|
reset(__a.release());
|
|
|
|
return *this;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @brief %auto_ptr assignment operator.
|
2011-08-07 07:27:06 +00:00
|
|
|
* @param __a Another %auto_ptr of a different but related type.
|
2007-03-10 20:29:45 +00:00
|
|
|
*
|
|
|
|
* A pointer-to-Tp1 must be convertible to a pointer-to-Tp/element_type.
|
|
|
|
*
|
2011-08-07 07:27:06 +00:00
|
|
|
* This object now @e owns the object previously owned by @a __a,
|
2008-01-31 18:44:55 +00:00
|
|
|
* which has given up ownership. The object that this one @e
|
2007-03-10 20:29:45 +00:00
|
|
|
* used to own and track has been deleted.
|
|
|
|
*/
|
|
|
|
template<typename _Tp1>
|
|
|
|
auto_ptr&
|
|
|
|
operator=(auto_ptr<_Tp1>& __a) throw()
|
|
|
|
{
|
|
|
|
reset(__a.release());
|
|
|
|
return *this;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* When the %auto_ptr goes out of scope, the object it owns is
|
|
|
|
* deleted. If it no longer owns anything (i.e., @c get() is
|
|
|
|
* @c NULL), then this has no effect.
|
|
|
|
*
|
|
|
|
* The C++ standard says there is supposed to be an empty throw
|
|
|
|
* specification here, but omitting it is standard conforming. Its
|
|
|
|
* presence can be detected only if _Tp::~_Tp() throws, but this is
|
|
|
|
* prohibited. [17.4.3.6]/2
|
|
|
|
*/
|
|
|
|
~auto_ptr() { delete _M_ptr; }
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @brief Smart pointer dereferencing.
|
|
|
|
*
|
|
|
|
* If this %auto_ptr no longer owns anything, then this
|
2010-02-04 18:20:34 +00:00
|
|
|
* operation will crash. (For a smart pointer, <em>no longer owns
|
|
|
|
* anything</em> is the same as being a null pointer, and you know
|
2007-03-10 20:29:45 +00:00
|
|
|
* what happens when you dereference one of those...)
|
|
|
|
*/
|
|
|
|
element_type&
|
|
|
|
operator*() const throw()
|
|
|
|
{
|
Enable lightweight checks with _GLIBCXX_ASSERTIONS.
* doc/xml/manual/using.xml (_GLIBCXX_ASSERTIONS): Document.
* doc/html/manual/using_macros.html: Regenerate.
* include/bits/c++config: Define _GLIBCXX_ASSERTIONS when
_GLIBCXX_DEBUG is defined. Disable std::string extern templates when
(_GLIBCXX_EXTERN_TEMPLATE, __glibcxx_assert): Depend on
_GLIBCXX_ASSERTIONS instead of _GLIBCXX_DEBUG.
* include/debug/debug.h [!_GLIBCXX_DEBUG]: Define
__glibcxx_requires_non_empty_range and __glibcxx_requires_nonempty.
* include/backward/auto_ptr.h (auto_ptr::operator*,
auto_ptr::operator->): Replace _GLIBCXX_DEBUG_ASSERT with
__glibcxx_assert.
* include/bits/basic_string.h (basic_string::operator[],
basic_string::front, basic_string::back, basic_string::pop_back):
Likewise.
* include/bits/random.h
(uniform_int_distribution::param_type::param_type,
uniform_real_distribution::param_type::param_type,
normal_distribution::param_type::param_type,
gamma_distribution::param_type::param_type,
bernoulli_distribution::param_type::param_type,
binomial_distribution::param_type::param_type,
geometric_distribution::param_type::param_type,
negative_binomial_distribution::param_type::param_type,
poisson_distribution::param_type::param_type,
exponential_distribution::param_type::param_type): Likewise.
* include/bits/regex.h (match_results::operator[],
match_results::prefix, match_results::suffix): Likewise.
* include/bits/regex.tcc (format, regex_iterator::operator++):
Likewise.
* include/bits/regex_automaton.tcc (_StateSeq::_M_clone): Likewise.
* include/bits/regex_compiler.tcc (_Compiler::_Compiler,
_Compiler::_M_insert_character_class_matcher): Likewise.
* include/bits/regex_executor.tcc (_Executor::_M_dfs): Likewise.
* include/bits/regex_scanner.tcc (_Scanner::_M_advance,
_Scanner::_M_scan_normal): Likewise.
* include/bits/shared_ptr_base.h (__shared_ptr::_M_reset,
__shared_ptr::operator*): Likewise.
* include/bits/stl_iterator_base_funcs.h (__advance): Likewise.
* include/bits/unique_ptr.h (unique_ptr::operator*,
unique_ptr::operator[]): Likewise.
* include/experimental/fs_path.h (path::path(string_type, _Type),
path::iterator::operator++, path::iterator::operator--,
path::iterator::operator*): Likewise.
* include/experimental/string_view (basic_string_view::operator[],
basic_string_view::front, basic_string_view::back,
basic_string_view::remove_prefix): Likewise.
* include/ext/random (beta_distribution::param_type::param_type,
normal_mv_distribution::param_type::param_type,
rice_distribution::param_type::param_type,
pareto_distribution::param_type::param_type,
k_distribution::param_type::param_type,
arcsine_distribution::param_type::param_type,
hoyt_distribution::param_type::param_type,
triangular_distribution::param_type::param_type,
von_mises_distribution::param_type::param_type,
hypergeometric_distribution::param_type::param_type,
logistic_distribution::param_type::param_type): Likewise.
* include/ext/vstring.h (__versa_string::operator[]): Likewise.
* include/std/complex (polar): Likewise.
* include/std/mutex [!_GTHREAD_USE_MUTEX_TIMEDLOCK]
(timed_mutex::~timed_mutex, timed_mutex::unlock,
(recursive_timed_mutex::~timed_mutex, recursive_timed_mutex::unlock):
Likewise.
* include/std/shared_mutex [!PTHREAD_RWLOCK_INITIALIZER]
(__shared_mutex_pthread::__shared_mutex_pthread,
__shared_mutex_pthread::~__shared_mutex_pthread): Likewise.
(__shared_mutex_pthread::lock, __shared_mutex_pthread::try_lock,
__shared_mutex_pthread::unlock, __shared_mutex_pthread::lock_shared,
__shared_mutex_pthread::try_lock_shared): Likewise.
(__shared_mutex_cv::~__shared_mutex_cv, __shared_mutex_cv::unlock,
__shared_mutex_cv::unlock_shared): Likewise.
(shared_timed_mutex::try_lock_until,
shared_timed_mutex::try_lock_shared_until): Likewise.
* include/std/valarray (valarray::valarray(const _Tp*, size_t),
valarray::operator=, valarray::sum, valarray::min, valarray::max,
_DEFINE_VALARRAY_AUGMENTED_ASSIGNMENT, _DEFINE_BINARY_OPERATOR):
Likewise.
From-SVN: r227595
2015-09-09 18:12:47 +01:00
|
|
|
__glibcxx_assert(_M_ptr != 0);
|
2007-03-10 20:29:45 +00:00
|
|
|
return *_M_ptr;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @brief Smart pointer dereferencing.
|
|
|
|
*
|
|
|
|
* This returns the pointer itself, which the language then will
|
|
|
|
* automatically cause to be dereferenced.
|
|
|
|
*/
|
|
|
|
element_type*
|
|
|
|
operator->() const throw()
|
|
|
|
{
|
Enable lightweight checks with _GLIBCXX_ASSERTIONS.
* doc/xml/manual/using.xml (_GLIBCXX_ASSERTIONS): Document.
* doc/html/manual/using_macros.html: Regenerate.
* include/bits/c++config: Define _GLIBCXX_ASSERTIONS when
_GLIBCXX_DEBUG is defined. Disable std::string extern templates when
(_GLIBCXX_EXTERN_TEMPLATE, __glibcxx_assert): Depend on
_GLIBCXX_ASSERTIONS instead of _GLIBCXX_DEBUG.
* include/debug/debug.h [!_GLIBCXX_DEBUG]: Define
__glibcxx_requires_non_empty_range and __glibcxx_requires_nonempty.
* include/backward/auto_ptr.h (auto_ptr::operator*,
auto_ptr::operator->): Replace _GLIBCXX_DEBUG_ASSERT with
__glibcxx_assert.
* include/bits/basic_string.h (basic_string::operator[],
basic_string::front, basic_string::back, basic_string::pop_back):
Likewise.
* include/bits/random.h
(uniform_int_distribution::param_type::param_type,
uniform_real_distribution::param_type::param_type,
normal_distribution::param_type::param_type,
gamma_distribution::param_type::param_type,
bernoulli_distribution::param_type::param_type,
binomial_distribution::param_type::param_type,
geometric_distribution::param_type::param_type,
negative_binomial_distribution::param_type::param_type,
poisson_distribution::param_type::param_type,
exponential_distribution::param_type::param_type): Likewise.
* include/bits/regex.h (match_results::operator[],
match_results::prefix, match_results::suffix): Likewise.
* include/bits/regex.tcc (format, regex_iterator::operator++):
Likewise.
* include/bits/regex_automaton.tcc (_StateSeq::_M_clone): Likewise.
* include/bits/regex_compiler.tcc (_Compiler::_Compiler,
_Compiler::_M_insert_character_class_matcher): Likewise.
* include/bits/regex_executor.tcc (_Executor::_M_dfs): Likewise.
* include/bits/regex_scanner.tcc (_Scanner::_M_advance,
_Scanner::_M_scan_normal): Likewise.
* include/bits/shared_ptr_base.h (__shared_ptr::_M_reset,
__shared_ptr::operator*): Likewise.
* include/bits/stl_iterator_base_funcs.h (__advance): Likewise.
* include/bits/unique_ptr.h (unique_ptr::operator*,
unique_ptr::operator[]): Likewise.
* include/experimental/fs_path.h (path::path(string_type, _Type),
path::iterator::operator++, path::iterator::operator--,
path::iterator::operator*): Likewise.
* include/experimental/string_view (basic_string_view::operator[],
basic_string_view::front, basic_string_view::back,
basic_string_view::remove_prefix): Likewise.
* include/ext/random (beta_distribution::param_type::param_type,
normal_mv_distribution::param_type::param_type,
rice_distribution::param_type::param_type,
pareto_distribution::param_type::param_type,
k_distribution::param_type::param_type,
arcsine_distribution::param_type::param_type,
hoyt_distribution::param_type::param_type,
triangular_distribution::param_type::param_type,
von_mises_distribution::param_type::param_type,
hypergeometric_distribution::param_type::param_type,
logistic_distribution::param_type::param_type): Likewise.
* include/ext/vstring.h (__versa_string::operator[]): Likewise.
* include/std/complex (polar): Likewise.
* include/std/mutex [!_GTHREAD_USE_MUTEX_TIMEDLOCK]
(timed_mutex::~timed_mutex, timed_mutex::unlock,
(recursive_timed_mutex::~timed_mutex, recursive_timed_mutex::unlock):
Likewise.
* include/std/shared_mutex [!PTHREAD_RWLOCK_INITIALIZER]
(__shared_mutex_pthread::__shared_mutex_pthread,
__shared_mutex_pthread::~__shared_mutex_pthread): Likewise.
(__shared_mutex_pthread::lock, __shared_mutex_pthread::try_lock,
__shared_mutex_pthread::unlock, __shared_mutex_pthread::lock_shared,
__shared_mutex_pthread::try_lock_shared): Likewise.
(__shared_mutex_cv::~__shared_mutex_cv, __shared_mutex_cv::unlock,
__shared_mutex_cv::unlock_shared): Likewise.
(shared_timed_mutex::try_lock_until,
shared_timed_mutex::try_lock_shared_until): Likewise.
* include/std/valarray (valarray::valarray(const _Tp*, size_t),
valarray::operator=, valarray::sum, valarray::min, valarray::max,
_DEFINE_VALARRAY_AUGMENTED_ASSIGNMENT, _DEFINE_BINARY_OPERATOR):
Likewise.
From-SVN: r227595
2015-09-09 18:12:47 +01:00
|
|
|
__glibcxx_assert(_M_ptr != 0);
|
2007-03-10 20:29:45 +00:00
|
|
|
return _M_ptr;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @brief Bypassing the smart pointer.
|
|
|
|
* @return The raw pointer being managed.
|
|
|
|
*
|
|
|
|
* You can get a copy of the pointer that this object owns, for
|
|
|
|
* situations such as passing to a function which only accepts
|
|
|
|
* a raw pointer.
|
|
|
|
*
|
|
|
|
* @note This %auto_ptr still owns the memory.
|
|
|
|
*/
|
|
|
|
element_type*
|
|
|
|
get() const throw() { return _M_ptr; }
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @brief Bypassing the smart pointer.
|
|
|
|
* @return The raw pointer being managed.
|
|
|
|
*
|
|
|
|
* You can get a copy of the pointer that this object owns, for
|
|
|
|
* situations such as passing to a function which only accepts
|
|
|
|
* a raw pointer.
|
|
|
|
*
|
|
|
|
* @note This %auto_ptr no longer owns the memory. When this object
|
|
|
|
* goes out of scope, nothing will happen.
|
|
|
|
*/
|
|
|
|
element_type*
|
|
|
|
release() throw()
|
|
|
|
{
|
|
|
|
element_type* __tmp = _M_ptr;
|
|
|
|
_M_ptr = 0;
|
|
|
|
return __tmp;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @brief Forcibly deletes the managed object.
|
2011-08-07 07:27:06 +00:00
|
|
|
* @param __p A pointer (defaults to NULL).
|
2007-03-10 20:29:45 +00:00
|
|
|
*
|
2011-08-07 07:27:06 +00:00
|
|
|
* This object now @e owns the object pointed to by @a __p. The
|
2007-03-10 20:29:45 +00:00
|
|
|
* previous object has been deleted.
|
|
|
|
*/
|
|
|
|
void
|
|
|
|
reset(element_type* __p = 0) throw()
|
|
|
|
{
|
|
|
|
if (__p != _M_ptr)
|
|
|
|
{
|
|
|
|
delete _M_ptr;
|
|
|
|
_M_ptr = __p;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @brief Automatic conversions
|
|
|
|
*
|
2016-10-19 19:18:43 +01:00
|
|
|
* These operations are supposed to convert an %auto_ptr into and from
|
|
|
|
* an auto_ptr_ref automatically as needed. This would allow
|
|
|
|
* constructs such as
|
2007-03-10 20:29:45 +00:00
|
|
|
* @code
|
|
|
|
* auto_ptr<Derived> func_returning_auto_ptr(.....);
|
|
|
|
* ...
|
|
|
|
* auto_ptr<Base> ptr = func_returning_auto_ptr(.....);
|
|
|
|
* @endcode
|
2016-10-19 19:18:43 +01:00
|
|
|
*
|
|
|
|
* But it doesn't work, and won't be fixed. For further details see
|
|
|
|
* http://cplusplus.github.io/LWG/lwg-closed.html#463
|
2007-03-10 20:29:45 +00:00
|
|
|
*/
|
|
|
|
auto_ptr(auto_ptr_ref<element_type> __ref) throw()
|
|
|
|
: _M_ptr(__ref._M_ptr) { }
|
|
|
|
|
|
|
|
auto_ptr&
|
|
|
|
operator=(auto_ptr_ref<element_type> __ref) throw()
|
|
|
|
{
|
|
|
|
if (__ref._M_ptr != this->get())
|
|
|
|
{
|
|
|
|
delete _M_ptr;
|
|
|
|
_M_ptr = __ref._M_ptr;
|
|
|
|
}
|
|
|
|
return *this;
|
|
|
|
}
|
|
|
|
|
|
|
|
template<typename _Tp1>
|
|
|
|
operator auto_ptr_ref<_Tp1>() throw()
|
|
|
|
{ return auto_ptr_ref<_Tp1>(this->release()); }
|
|
|
|
|
|
|
|
template<typename _Tp1>
|
|
|
|
operator auto_ptr<_Tp1>() throw()
|
|
|
|
{ return auto_ptr<_Tp1>(this->release()); }
|
libstdc++: Add deprecated attributes to old iostream members
Back in 2017 I removed these prehistoric members (which were deprecated
since C++98) for C++17 mode. But I didn't add deprecated attributes to
most of them, so users didn't get any warning they would be going away.
Apparently some poor souls do actually use some of these names, and so
now that GCC 11 defaults to -std=gnu++17 some code has stopped
compiling.
This adds deprecated attributes to them, so that C++98/03/11/14 code
will get a warning if it uses them. I'll also backport this to the
release branches so that users can find out about the deprecation before
they start using C++17.
In order to give deprecated warnings even in C++98 mode this patch makes
_GLIBCXX_DEPRECATED work even for C++98, adds _GLIBCXX11_DEPRECATED for
the old meaning of _GLIBCXX_DEPRECATED, and adds new macros such as
_GLIBCXX_DEPRECATED_SUGGEST for suggesting alternatives to deprecated
features.
libstdc++-v3/ChangeLog:
* include/bits/c++config (_GLIBCXX_DEPRECATED): Define for all
standard modes.
(_GLIBCXX_DEPRECATED_SUGGEST): New macro for "use 'foo' instead"
message in deprecated warnings.
(_GLIBCXX11_DEPRECATED, _GLIBCXX11_DEPRECATED_SUGGEST): New
macros for marking features derpecated in C++11.
(_GLIBCXX17_DEPRECATED_SUGGEST, _GLIBCXX20_DEPRECATED_SUGGEST):
New macros.
* include/backward/auto_ptr.h (auto_ptr_ref, auto_ptr<void>):
Use _GLIBCXX11_DEPRECATED instead of _GLIBCXX_DEPRECATED.
(auto_ptr): Use _GLIBCXX11_DEPRECATED_SUGGEST.
* include/backward/binders.h (binder1st, binder2nd): Likewise.
* include/bits/ios_base.h (io_state, open_mode, seek_dir)
(streampos, streamoff): Use _GLIBCXX_DEPRECATED_SUGGEST.
* include/std/streambuf (stossc): Replace C++11 attribute
with _GLIBCXX_DEPRECATED_SUGGEST.
* include/std/type_traits (__is_nullptr_t): Use
_GLIBCXX_DEPRECATED_SUGGEST instead of _GLIBCXX_DEPRECATED.
* testsuite/27_io/types/1.cc: Check for deprecated warnings.
Also check for io_state, open_mode and seek_dir typedefs.
2020-08-19 12:13:03 +01:00
|
|
|
} _GLIBCXX11_DEPRECATED_SUGGEST("std::unique_ptr");
|
2007-03-10 20:29:45 +00:00
|
|
|
|
|
|
|
// _GLIBCXX_RESOLVE_LIB_DEFECTS
|
|
|
|
// 541. shared_ptr template assignment and void
|
|
|
|
template<>
|
|
|
|
class auto_ptr<void>
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
typedef void element_type;
|
libstdc++: Add deprecated attributes to old iostream members
Back in 2017 I removed these prehistoric members (which were deprecated
since C++98) for C++17 mode. But I didn't add deprecated attributes to
most of them, so users didn't get any warning they would be going away.
Apparently some poor souls do actually use some of these names, and so
now that GCC 11 defaults to -std=gnu++17 some code has stopped
compiling.
This adds deprecated attributes to them, so that C++98/03/11/14 code
will get a warning if it uses them. I'll also backport this to the
release branches so that users can find out about the deprecation before
they start using C++17.
In order to give deprecated warnings even in C++98 mode this patch makes
_GLIBCXX_DEPRECATED work even for C++98, adds _GLIBCXX11_DEPRECATED for
the old meaning of _GLIBCXX_DEPRECATED, and adds new macros such as
_GLIBCXX_DEPRECATED_SUGGEST for suggesting alternatives to deprecated
features.
libstdc++-v3/ChangeLog:
* include/bits/c++config (_GLIBCXX_DEPRECATED): Define for all
standard modes.
(_GLIBCXX_DEPRECATED_SUGGEST): New macro for "use 'foo' instead"
message in deprecated warnings.
(_GLIBCXX11_DEPRECATED, _GLIBCXX11_DEPRECATED_SUGGEST): New
macros for marking features derpecated in C++11.
(_GLIBCXX17_DEPRECATED_SUGGEST, _GLIBCXX20_DEPRECATED_SUGGEST):
New macros.
* include/backward/auto_ptr.h (auto_ptr_ref, auto_ptr<void>):
Use _GLIBCXX11_DEPRECATED instead of _GLIBCXX_DEPRECATED.
(auto_ptr): Use _GLIBCXX11_DEPRECATED_SUGGEST.
* include/backward/binders.h (binder1st, binder2nd): Likewise.
* include/bits/ios_base.h (io_state, open_mode, seek_dir)
(streampos, streamoff): Use _GLIBCXX_DEPRECATED_SUGGEST.
* include/std/streambuf (stossc): Replace C++11 attribute
with _GLIBCXX_DEPRECATED_SUGGEST.
* include/std/type_traits (__is_nullptr_t): Use
_GLIBCXX_DEPRECATED_SUGGEST instead of _GLIBCXX_DEPRECATED.
* testsuite/27_io/types/1.cc: Check for deprecated warnings.
Also check for io_state, open_mode and seek_dir typedefs.
2020-08-19 12:13:03 +01:00
|
|
|
} _GLIBCXX11_DEPRECATED;
|
2007-03-10 20:29:45 +00:00
|
|
|
|
2012-11-10 12:27:22 -05:00
|
|
|
#if __cplusplus >= 201103L
|
2012-08-03 00:27:48 +00:00
|
|
|
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>
|
Prepare shared_ptr for array support
* include/backward/auto_ptr.h (__shared_ptr(auto_ptr&&))
(shared_ptr(auto_ptr&&)): Adjust template parameter lists.
* include/bits/shared_ptr.h (__sp_compatible_with)
(__sp_is_constructible): New helper traits for shared_ptr.
(shared_ptr::_Convertible): Replace with _Constructible.
(shared_ptr::_Constructible, shared_ptr::_Assignable): Forward checks
to base class.
(shared_ptr::shared_ptr, shared_ptr::operator=): Constrain template
with _Constructible and _Assignable.
(shared_ptr::shared_ptr(shared_ptr<_Tp1>, _Tp*)): Use element_type
instead of _Tp.
(operator<): Likewise.
(operator>): Define in terms of operator<.
(static_pointer_cast, const_pointer_cast, dynamic_pointer_cast): Use
element_type instead of _Tp.
(reinterpret_pointer_cast): Define for C++17.
(weak_ptr::_Convertible): Replace with _Constructible.
(weak_ptr::_Constructible, weak_ptr::_Assignable): Forward checks
to base class.
(weak_ptr::weak_ptr, weak_ptr::operator=): Constrain templates
with _Constructible and _Assignable.
* include/bits/shared_ptr_base.h (__shared_ptr::_Convertible): Replace
with _Compatible.
(__shared_ptr::_SafeConv): New constraint for incoming raw pointers.
(__shared_ptr::_Compatible): New constraint for converting from
other types of shared_ptr and weak_ptr.
(__shared_ptr::_Assignable): Define in terms of _Compatible.
(__shared_ptr::_UniqCompatible, __shared_ptr::_UniqAssignable): New
constraints for converting from unique_ptr.
(__shared_ptr::__shared_ptr, __shared_ptr::operator=): Constrain
template with _SaveConf, _Compatible and _Assignable. Remove
__glibcxx_function_requires concept checks. Add static assertion for
deleter expression being well-formed.
(__shared_ptr::__shared_ptr(__shared_ptr<_Tp1>, _Tp*))
(__shared_ptr::operator*, __shared_ptr::operator->)
(__shared_ptr::get, __shared_ptr::_M_ptr): Use element_type instead
of _Tp.
(operator<): Likewise.
(operator>): Define in terms of operator<.
(static_pointer_cast, const_pointer_cast, dynamic_pointer_cast): Use
element_type instead of _Tp.
(reinterpret_pointer_cast): Define for C++17.
(weak_ptr::_Convertible): Replace with _Compatible.
(weak_ptr::_Compatible, weak_ptr::_Assignable): New constraints for
conversions from other types of weak_ptr and shared_ptr.
(__weak_ptr::__weak_ptr, __weak_ptr::operator=): Constrain templates
with _Constructible and _Assignable.
(__weak_ptr::_M_ptr): Use element_type instead of _Tp.
* testsuite/20_util/shared_ptr/assign/auto_ptr_neg.cc: Adjust
dg-error pattern.
* testsuite/20_util/shared_ptr/cons/auto_ptr.cc: Test conversions.
* testsuite/20_util/shared_ptr/cons/unique_ptr.cc: Likewise.
* testsuite/20_util/shared_ptr/cons/void_neg.cc: Likewise.
* testsuite/20_util/shared_ptr/casts/reinterpret.cc: New test.
From-SVN: r241373
2016-10-20 13:07:45 +01:00
|
|
|
template<typename _Tp1, typename>
|
2012-08-03 00:27:48 +00:00
|
|
|
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));
|
2016-10-19 21:13:14 +01:00
|
|
|
_M_enable_shared_from_this_with(__tmp);
|
2012-08-03 00:27:48 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
template<typename _Tp>
|
Prepare shared_ptr for array support
* include/backward/auto_ptr.h (__shared_ptr(auto_ptr&&))
(shared_ptr(auto_ptr&&)): Adjust template parameter lists.
* include/bits/shared_ptr.h (__sp_compatible_with)
(__sp_is_constructible): New helper traits for shared_ptr.
(shared_ptr::_Convertible): Replace with _Constructible.
(shared_ptr::_Constructible, shared_ptr::_Assignable): Forward checks
to base class.
(shared_ptr::shared_ptr, shared_ptr::operator=): Constrain template
with _Constructible and _Assignable.
(shared_ptr::shared_ptr(shared_ptr<_Tp1>, _Tp*)): Use element_type
instead of _Tp.
(operator<): Likewise.
(operator>): Define in terms of operator<.
(static_pointer_cast, const_pointer_cast, dynamic_pointer_cast): Use
element_type instead of _Tp.
(reinterpret_pointer_cast): Define for C++17.
(weak_ptr::_Convertible): Replace with _Constructible.
(weak_ptr::_Constructible, weak_ptr::_Assignable): Forward checks
to base class.
(weak_ptr::weak_ptr, weak_ptr::operator=): Constrain templates
with _Constructible and _Assignable.
* include/bits/shared_ptr_base.h (__shared_ptr::_Convertible): Replace
with _Compatible.
(__shared_ptr::_SafeConv): New constraint for incoming raw pointers.
(__shared_ptr::_Compatible): New constraint for converting from
other types of shared_ptr and weak_ptr.
(__shared_ptr::_Assignable): Define in terms of _Compatible.
(__shared_ptr::_UniqCompatible, __shared_ptr::_UniqAssignable): New
constraints for converting from unique_ptr.
(__shared_ptr::__shared_ptr, __shared_ptr::operator=): Constrain
template with _SaveConf, _Compatible and _Assignable. Remove
__glibcxx_function_requires concept checks. Add static assertion for
deleter expression being well-formed.
(__shared_ptr::__shared_ptr(__shared_ptr<_Tp1>, _Tp*))
(__shared_ptr::operator*, __shared_ptr::operator->)
(__shared_ptr::get, __shared_ptr::_M_ptr): Use element_type instead
of _Tp.
(operator<): Likewise.
(operator>): Define in terms of operator<.
(static_pointer_cast, const_pointer_cast, dynamic_pointer_cast): Use
element_type instead of _Tp.
(reinterpret_pointer_cast): Define for C++17.
(weak_ptr::_Convertible): Replace with _Compatible.
(weak_ptr::_Compatible, weak_ptr::_Assignable): New constraints for
conversions from other types of weak_ptr and shared_ptr.
(__weak_ptr::__weak_ptr, __weak_ptr::operator=): Constrain templates
with _Constructible and _Assignable.
(__weak_ptr::_M_ptr): Use element_type instead of _Tp.
* testsuite/20_util/shared_ptr/assign/auto_ptr_neg.cc: Adjust
dg-error pattern.
* testsuite/20_util/shared_ptr/cons/auto_ptr.cc: Test conversions.
* testsuite/20_util/shared_ptr/cons/unique_ptr.cc: Likewise.
* testsuite/20_util/shared_ptr/cons/void_neg.cc: Likewise.
* testsuite/20_util/shared_ptr/casts/reinterpret.cc: New test.
From-SVN: r241373
2016-10-20 13:07:45 +01:00
|
|
|
template<typename _Tp1, typename>
|
2012-08-03 00:27:48 +00:00
|
|
|
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
|
|
|
|
|
2017-04-21 14:08:51 +01:00
|
|
|
#pragma GCC diagnostic pop
|
|
|
|
|
PR libstdc++/36104 part four
2011-01-30 Benjamin Kosnik <bkoz@redhat.com>
PR libstdc++/36104 part four
* include/bits/c++config (_GLIBCXX_STD): Remove.
(_GLIBCXX_STD_D, _GLIBCXX_PR): Now _GLIBCXX_STD_C.
(_GLIBCXX_P): Now _GLIBCXX_STD_A.
(_GLIBCXX_NAMESPACE_DEBUG, _GLIBCXX_NAMESPACE_PARALLEL,
_GLIBCXX_NAMESPACE_PROFILE, _GLIBCXX_NAMESPACE_VERSION): Remove.
(_GLIBCXX_INLINE_DEBUG, _GLIBCXX_INLINE_PARALLEL,
_GLIBCXX_INLINE_PROFILE): Remove.
(_GLIBCXX_BEGIN_NAMESPACE(X)): Remove.
(_GLIBCXX_END_NAMESPACE): Remove.
(_GLIBCXX_BEGIN_NESTED_NAMESPACE(X, Y)): Remove.
(_GLIBCXX_END_NESTED_NAMESPACE): Remove.
(_GLIBCXX_BEGIN_NAMESPACE_ALGO): Add.
(_GLIBCXX_END_NAMESPACE_ALGO): Add.
(_GLIBCXX_BEGIN_NAMESPACE_CONTAINER): Add.
(_GLIBCXX_END_NAMESPACE_CONTAINER): Add.
(_GLIBCXX_BEGIN_NAMESPACE_VERSION): Add.
(_GLIBCXX_END_NAMESPACE_VERSION): Add.
(_GLIBCXX_BEGIN_LDBL_NAMESPACE): To _GLIBCXX_BEGIN_NAMESPACE_LDBL.
(_GLIBCXX_END_LDBL_NAMESPACE): To _GLIBCXX_END_NAMESPACE_LDBL.
(_GLIBCXX_VISIBILITY_ATTR): Revert to _GLIBCXX_VISIBILITY.
* include/*: Use new macros for namespace scope.
* config/*: Same.
* src/*: Same.
* src/Makefile.am (sources): Remove debug_list.cc, add
compatibility-debug_list-2.cc.
(parallel_sources): Remove parallel_list.cc, add
compatibility-parallel_list-2.cc.
(compatibility-parallel_list-2.[o,lo]): New rule.
* src/Makefile.in: Regenerate.
* src/debug_list.cc: Remove.
* src/parallel_list.cc: Remove.
* src/compatibility-list-2.cc: New.
* src/compatibility-debug_list-2.cc: New.
* src/compatibility-parallel_list-2.cc: New.
* doc/doxygen/user.cfg.in: Adjust macros.
* testsuite/20_util/auto_ptr/assign_neg.cc: Adjust line numbers, macros.
* testsuite/20_util/declval/requirements/1_neg.cc: Same.
* testsuite/20_util/duration/requirements/typedefs_neg1.cc: Same.
* testsuite/20_util/duration/requirements/typedefs_neg2.cc: Same.
* testsuite/20_util/duration/requirements/typedefs_neg3.cc: Same.
* testsuite/20_util/forward/c_neg.cc: Same.
* testsuite/20_util/forward/f_neg.cc: Same.
* testsuite/20_util/make_signed/requirements/typedefs_neg.cc: Same.
* testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc: Same.
* testsuite/20_util/ratio/cons/cons_overflow_neg.cc: Same.
* testsuite/20_util/ratio/operations/ops_overflow_neg.cc: Same.
* testsuite/20_util/shared_ptr/cons/43820_neg.cc: Same.
* testsuite/20_util/weak_ptr/comparison/cmp_neg.cc: Same.
* testsuite/23_containers/deque/requirements/dr438/assign_neg.cc: Same.
* testsuite/23_containers/deque/requirements/dr438/
constructor_1_neg.cc: Same.
* testsuite/23_containers/deque/requirements/dr438/
constructor_2_neg.cc: Same.
* testsuite/23_containers/deque/requirements/dr438/insert_neg.cc: Same.
* testsuite/23_containers/forward_list/capacity/1.cc: Same.
* testsuite/23_containers/forward_list/requirements/dr438/
assign_neg.cc: Same.
* testsuite/23_containers/forward_list/requirements/dr438/
constructor_1_neg.cc: Same.
* testsuite/23_containers/forward_list/requirements/dr438/
constructor_2_neg.cc: Same.
* testsuite/23_containers/forward_list/requirements/dr438/
insert_neg.cc: Same.
* testsuite/23_containers/list/capacity/29134.cc: Same.
* testsuite/23_containers/list/requirements/dr438/assign_neg.cc: Same.
* testsuite/23_containers/list/requirements/dr438/
constructor_1_neg.cc: Same.
* testsuite/23_containers/list/requirements/dr438/
constructor_2_neg.cc: Same.
* testsuite/23_containers/list/requirements/dr438/insert_neg.cc: Same.
* testsuite/23_containers/vector/bool/capacity/29134.cc: Same.
* testsuite/23_containers/vector/bool/modifiers/insert/31370.cc: Same.
* testsuite/23_containers/vector/requirements/dr438/assign_neg.cc: Same.
* testsuite/23_containers/vector/requirements/dr438/
constructor_1_neg.cc: Same.
* testsuite/23_containers/vector/requirements/dr438/
constructor_2_neg.cc: Same.
* testsuite/23_containers/vector/requirements/dr438/insert_neg.cc: Same.
* testsuite/25_algorithms/sort/35588.cc: Same.
* testsuite/27_io/ios_base/cons/assign_neg.cc: Same.
* testsuite/27_io/ios_base/cons/copy_neg.cc: Same.
* testsuite/ext/profile/mutex_extensions_neg.cc: Same.
* testsuite/ext/profile/profiler_algos.cc: Same.
* testsuite/ext/type_traits/add_unsigned_floating_neg.cc: Same.
* testsuite/ext/type_traits/add_unsigned_integer_neg.cc: Same.
* testsuite/ext/type_traits/remove_unsigned_floating_neg.cc: Same.
* testsuite/ext/type_traits/remove_unsigned_integer_neg.cc: Same.
* testsuite/tr1/2_general_utilities/shared_ptr/cons/43820_neg.cc: Same.
From-SVN: r169421
2011-01-30 22:39:36 +00:00
|
|
|
_GLIBCXX_END_NAMESPACE_VERSION
|
|
|
|
} // namespace
|
2007-03-10 20:29:45 +00:00
|
|
|
|
2010-03-16 22:34:53 +00:00
|
|
|
#endif /* _BACKWARD_AUTO_PTR_H */
|