unique_ptr.h: Remove private __this_type typedef.
2009-02-04 Benjamin Kosnik <bkoz@redhat.com> * include/bits/unique_ptr.h: Remove private __this_type typedef. * include/bits/stl_vector.h: Remove private vector_type typedef. * testsuite/23_containers/vector/requirements/dr438/assign_neg.cc: Fix line numbers. * testsuite/23_containers/vector/requirements/dr438/insert_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/20_util/unique_ptr/modifiers/reset_neg.cc: Same. * testsuite/20_util/unique_ptr/assign/assign.cc: Same. From-SVN: r143949
This commit is contained in:
parent
5006381cc1
commit
37d5c6baac
@ -1,3 +1,17 @@
|
||||
2009-02-04 Benjamin Kosnik <bkoz@redhat.com>
|
||||
|
||||
* include/bits/unique_ptr.h: Remove private __this_type typedef.
|
||||
* include/bits/stl_vector.h: Remove private vector_type typedef.
|
||||
* testsuite/23_containers/vector/requirements/dr438/assign_neg.cc:
|
||||
Fix line numbers.
|
||||
* testsuite/23_containers/vector/requirements/dr438/insert_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/20_util/unique_ptr/modifiers/reset_neg.cc: Same.
|
||||
* testsuite/20_util/unique_ptr/assign/assign.cc: Same.
|
||||
|
||||
2009-02-03 Paolo Carlini <paolo.carlini@oracle.com>
|
||||
|
||||
PR libstdc++/25191
|
||||
|
@ -181,7 +181,6 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_D)
|
||||
__glibcxx_class_requires2(_Tp, _Alloc_value_type, _SameTypeConcept)
|
||||
|
||||
typedef _Vector_base<_Tp, _Alloc> _Base;
|
||||
typedef vector<_Tp, _Alloc> vector_type;
|
||||
typedef typename _Base::_Tp_alloc_type _Tp_alloc_type;
|
||||
|
||||
public:
|
||||
@ -190,8 +189,8 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_D)
|
||||
typedef typename _Tp_alloc_type::const_pointer const_pointer;
|
||||
typedef typename _Tp_alloc_type::reference reference;
|
||||
typedef typename _Tp_alloc_type::const_reference const_reference;
|
||||
typedef __gnu_cxx::__normal_iterator<pointer, vector_type> iterator;
|
||||
typedef __gnu_cxx::__normal_iterator<const_pointer, vector_type>
|
||||
typedef __gnu_cxx::__normal_iterator<pointer, vector> iterator;
|
||||
typedef __gnu_cxx::__normal_iterator<const_pointer, vector>
|
||||
const_iterator;
|
||||
typedef std::reverse_iterator<const_iterator> const_reverse_iterator;
|
||||
typedef std::reverse_iterator<iterator> reverse_iterator;
|
||||
|
@ -1,6 +1,6 @@
|
||||
// unique_ptr implementation -*- C++ -*-
|
||||
|
||||
// Copyright (C) 2008 Free Software Foundation, Inc.
|
||||
// Copyright (C) 2008, 2009 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,21 +80,20 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
|
||||
}
|
||||
};
|
||||
|
||||
/// 20.6.11.2 unique_ptr for single objects.
|
||||
/// 20.7.12.2 unique_ptr for single objects.
|
||||
template <typename _Tp, typename _Tp_Deleter = default_delete<_Tp> >
|
||||
class unique_ptr
|
||||
{
|
||||
typedef unique_ptr<_Tp, _Tp_Deleter> __this_type;
|
||||
typedef std::tuple<_Tp*, _Tp_Deleter> __tuple_type;
|
||||
typedef __tuple_type __this_type::* __unspecified_bool_type;
|
||||
typedef _Tp* __this_type::* __unspecified_pointer_type;
|
||||
typedef __tuple_type unique_ptr::* __unspecified_bool_type;
|
||||
typedef _Tp* unique_ptr::* __unspecified_pointer_type;
|
||||
|
||||
public:
|
||||
typedef _Tp* pointer;
|
||||
typedef _Tp element_type;
|
||||
typedef _Tp_Deleter deleter_type;
|
||||
|
||||
// constructors
|
||||
// Constructors.
|
||||
unique_ptr()
|
||||
: _M_t(pointer(), deleter_type())
|
||||
{ static_assert(!std::is_pointer<deleter_type>::value,
|
||||
@ -117,7 +116,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
|
||||
{ static_assert(!std::is_reference<deleter_type>::value,
|
||||
"rvalue deleter bound to reference"); }
|
||||
|
||||
// move constructors
|
||||
// Move constructors.
|
||||
unique_ptr(unique_ptr&& __u)
|
||||
: _M_t(__u.release(), std::forward<deleter_type>(__u.get_deleter())) { }
|
||||
|
||||
@ -126,10 +125,10 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
|
||||
: _M_t(__u.release(), std::forward<deleter_type>(__u.get_deleter()))
|
||||
{ }
|
||||
|
||||
// destructor
|
||||
// Destructor.
|
||||
~unique_ptr() { reset(); }
|
||||
|
||||
// assignment
|
||||
// Assignment.
|
||||
unique_ptr&
|
||||
operator=(unique_ptr&& __u)
|
||||
{
|
||||
@ -154,7 +153,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
|
||||
return *this;
|
||||
}
|
||||
|
||||
// observers
|
||||
// Observers.
|
||||
typename std::add_lvalue_reference<element_type>::type operator*() const
|
||||
{
|
||||
_GLIBCXX_DEBUG_ASSERT(get() != 0);
|
||||
@ -183,9 +182,9 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
|
||||
{ return std::get<1>(_M_t); }
|
||||
|
||||
operator __unspecified_bool_type () const
|
||||
{ return get() == 0 ? 0 : &__this_type::_M_t; }
|
||||
{ return get() == 0 ? 0 : &unique_ptr::_M_t; }
|
||||
|
||||
// modifiers
|
||||
// Modifiers.
|
||||
pointer
|
||||
release()
|
||||
{
|
||||
@ -211,7 +210,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
|
||||
swap(_M_t, __u._M_t);
|
||||
}
|
||||
|
||||
// disable copy from lvalue
|
||||
// Disable copy from lvalue.
|
||||
unique_ptr(const unique_ptr&) = delete;
|
||||
|
||||
template<typename _Up, typename _Up_Deleter>
|
||||
@ -226,24 +225,23 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
|
||||
__tuple_type _M_t;
|
||||
};
|
||||
|
||||
/// 20.6.11.3 unique_ptr for array objects with a runtime length
|
||||
/// 20.7.12.3 unique_ptr for array objects with a runtime length
|
||||
// [unique.ptr.runtime]
|
||||
// _GLIBCXX_RESOLVE_LIB_DEFECTS
|
||||
// DR 740 - omit specialization for array objects with a compile time length
|
||||
template<typename _Tp, typename _Tp_Deleter>
|
||||
class unique_ptr<_Tp[], _Tp_Deleter>
|
||||
{
|
||||
typedef unique_ptr<_Tp[], _Tp_Deleter> __this_type;
|
||||
typedef std::tuple<_Tp*, _Tp_Deleter> __tuple_type;
|
||||
typedef __tuple_type __this_type::* __unspecified_bool_type;
|
||||
typedef _Tp* __this_type::* __unspecified_pointer_type;
|
||||
typedef __tuple_type unique_ptr::* __unspecified_bool_type;
|
||||
typedef _Tp* unique_ptr::* __unspecified_pointer_type;
|
||||
|
||||
public:
|
||||
typedef _Tp* pointer;
|
||||
typedef _Tp element_type;
|
||||
typedef _Tp_Deleter deleter_type;
|
||||
|
||||
// constructors
|
||||
// Constructors.
|
||||
unique_ptr()
|
||||
: _M_t(pointer(), deleter_type())
|
||||
{ static_assert(!std::is_pointer<deleter_type>::value,
|
||||
@ -266,7 +264,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
|
||||
{ static_assert(!std::is_reference<deleter_type>::value,
|
||||
"rvalue deleter bound to reference"); }
|
||||
|
||||
// move constructors
|
||||
// Move constructors.
|
||||
unique_ptr(unique_ptr&& __u)
|
||||
: _M_t(__u.release(), std::forward<deleter_type>(__u.get_deleter())) { }
|
||||
|
||||
@ -275,10 +273,10 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
|
||||
: _M_t(__u.release(), std::forward<deleter_type>(__u.get_deleter()))
|
||||
{ }
|
||||
|
||||
// destructor
|
||||
// Destructor.
|
||||
~unique_ptr() { reset(); }
|
||||
|
||||
// assignment
|
||||
// Assignment.
|
||||
unique_ptr&
|
||||
operator=(unique_ptr&& __u)
|
||||
{
|
||||
@ -303,7 +301,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
|
||||
return *this;
|
||||
}
|
||||
|
||||
// observers
|
||||
// Observers.
|
||||
typename std::add_lvalue_reference<element_type>::type
|
||||
operator[](size_t __i) const
|
||||
{
|
||||
@ -326,9 +324,9 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
|
||||
{ return std::get<1>(_M_t); }
|
||||
|
||||
operator __unspecified_bool_type () const
|
||||
{ return get() == 0 ? 0 : &__this_type::_M_t; }
|
||||
{ return get() == 0 ? 0 : &unique_ptr::_M_t; }
|
||||
|
||||
// modifiers
|
||||
// Modifiers.
|
||||
pointer
|
||||
release()
|
||||
{
|
||||
@ -358,11 +356,11 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
|
||||
swap(_M_t, __u._M_t);
|
||||
}
|
||||
|
||||
// disable copy from lvalue
|
||||
// Disable copy from lvalue.
|
||||
unique_ptr(const unique_ptr&) = delete;
|
||||
unique_ptr& operator=(const unique_ptr&) = delete;
|
||||
|
||||
// disable construction from convertible pointer types
|
||||
// Disable construction from convertible pointer types.
|
||||
// (N2315 - 20.6.5.3.1)
|
||||
template<typename _Up>
|
||||
unique_ptr(_Up*, typename
|
||||
|
@ -1,7 +1,7 @@
|
||||
// { dg-do compile }
|
||||
// { dg-options "-std=gnu++0x" }
|
||||
|
||||
// Copyright (C) 2008 Free Software Foundation
|
||||
// Copyright (C) 2008, 2009 Free Software Foundation
|
||||
//
|
||||
// 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
|
||||
@ -53,7 +53,7 @@ test03()
|
||||
// { dg-error "used here" "" { target *-*-* } 43 }
|
||||
// { dg-error "no matching" "" { target *-*-* } 49 }
|
||||
// { dg-error "used here" "" { target *-*-* } 50 }
|
||||
// { dg-error "candidates are" "" { target *-*-* } 215 }
|
||||
// { dg-error "deleted function" "" { target *-*-* } 215 }
|
||||
// { dg-error "deleted function" "" { target *-*-* } 362 }
|
||||
// { dg-error "candidates are" "" { target *-*-* } 214 }
|
||||
// { dg-error "deleted function" "" { target *-*-* } 214 }
|
||||
// { dg-error "deleted function" "" { target *-*-* } 360 }
|
||||
// { dg-excess-errors "note" }
|
||||
|
@ -1,7 +1,7 @@
|
||||
// { dg-do compile }
|
||||
// { dg-options "-std=gnu++0x" }
|
||||
|
||||
// Copyright (C) 2008 Free Software Foundation
|
||||
// Copyright (C) 2008, 2009 Free Software Foundation
|
||||
//
|
||||
// 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
|
||||
@ -37,4 +37,4 @@ void test01()
|
||||
}
|
||||
|
||||
// { dg-error "used here" "" { target *-*-* } 36 }
|
||||
// { dg-error "deleted function" "" { target *-*-* } 352 }
|
||||
// { dg-error "deleted function" "" { target *-*-* } 350 }
|
||||
|
@ -1,6 +1,6 @@
|
||||
// 2007-04-27 Paolo Carlini <pcarlini@suse.de>
|
||||
|
||||
// Copyright (C) 2007, 2008 Free Software Foundation
|
||||
// Copyright (C) 2007, 2008, 2009 Free Software Foundation
|
||||
//
|
||||
// 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
|
||||
@ -19,7 +19,7 @@
|
||||
// USA.
|
||||
|
||||
// { dg-do compile }
|
||||
// { dg-error "no matching" "" { target *-*-* } 1058 }
|
||||
// { dg-error "no matching" "" { target *-*-* } 1057 }
|
||||
// { dg-excess-errors "" }
|
||||
|
||||
#include <vector>
|
||||
|
@ -1,6 +1,6 @@
|
||||
// 2007-04-27 Paolo Carlini <pcarlini@suse.de>
|
||||
|
||||
// Copyright (C) 2007, 2008 Free Software Foundation
|
||||
// Copyright (C) 2007, 2008, 2009 Free Software Foundation
|
||||
//
|
||||
// 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
|
||||
@ -19,7 +19,7 @@
|
||||
// USA.
|
||||
|
||||
// { dg-do compile }
|
||||
// { dg-error "no matching" "" { target *-*-* } 998 }
|
||||
// { dg-error "no matching" "" { target *-*-* } 997 }
|
||||
// { dg-excess-errors "" }
|
||||
|
||||
#include <vector>
|
||||
|
@ -1,6 +1,6 @@
|
||||
// 2007-04-27 Paolo Carlini <pcarlini@suse.de>
|
||||
|
||||
// Copyright (C) 2007, 2008 Free Software Foundation
|
||||
// Copyright (C) 2007, 2008, 2009 Free Software Foundation
|
||||
//
|
||||
// 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
|
||||
@ -19,7 +19,7 @@
|
||||
// USA.
|
||||
|
||||
// { dg-do compile }
|
||||
// { dg-error "no matching" "" { target *-*-* } 998 }
|
||||
// { dg-error "no matching" "" { target *-*-* } 997 }
|
||||
// { dg-excess-errors "" }
|
||||
|
||||
#include <vector>
|
||||
|
@ -1,6 +1,6 @@
|
||||
// 2007-04-27 Paolo Carlini <pcarlini@suse.de>
|
||||
|
||||
// Copyright (C) 2007, 2008 Free Software Foundation
|
||||
// Copyright (C) 2007, 2008, 2009 Free Software Foundation
|
||||
//
|
||||
// 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
|
||||
@ -19,7 +19,7 @@
|
||||
// USA.
|
||||
|
||||
// { dg-do compile }
|
||||
// { dg-error "no matching" "" { target *-*-* } 1099 }
|
||||
// { dg-error "no matching" "" { target *-*-* } 1098 }
|
||||
// { dg-excess-errors "" }
|
||||
|
||||
#include <vector>
|
||||
|
Loading…
x
Reference in New Issue
Block a user