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:
Benjamin Kosnik 2009-02-05 01:50:18 +00:00
parent 5006381cc1
commit 37d5c6baac
9 changed files with 59 additions and 48 deletions

View File

@ -1,6 +1,20 @@
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
PR libstdc++/25191
* libsupc++/exception_defines.h: Depending on __EXCEPTIONS,
deal consistently with __try and __catch too.
* src/localename.cc: Replace try -> __try, catch -> __catch.

View File

@ -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;

View File

@ -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* 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,8 +116,8 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
{ static_assert(!std::is_reference<deleter_type>::value,
"rvalue deleter bound to reference"); }
// move constructors
unique_ptr(unique_ptr && __u)
// Move constructors.
unique_ptr(unique_ptr&& __u)
: _M_t(__u.release(), std::forward<deleter_type>(__u.get_deleter())) { }
template<typename _Up, typename _Up_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 std::tuple<_Tp*, _Tp_Deleter> __tuple_type;
typedef __tuple_type unique_ptr::* __unspecified_bool_type;
typedef _Tp* unique_ptr::* __unspecified_pointer_type;
public:
typedef _Tp* pointer;
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

View File

@ -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" }

View File

@ -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 }

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>