OSDN Git Service

2010-02-16 Paolo Carlini <paolo.carlini@oracle.com>
authorpaolo <paolo@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 16 Feb 2010 16:01:23 +0000 (16:01 +0000)
committerpaolo <paolo@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 16 Feb 2010 16:01:23 +0000 (16:01 +0000)
* include/bits/unique_ptr.h: (unique_ptr<>::
unique_ptr(const unique_ptr<_Up, _Up_Deleter>&),
operator=(const unique_ptr<_Up, _Up_Deleter>&)): Remove, redundant,
per DR 1303.
* include/bits/shared_ptr.h (shared_ptr<>::
shared_ptr(const unique_ptr<_Up, _Up_Deleter>&),
operator=(const unique_ptr<_Up, _Up_Deleter>&)): Likewise.
* include/bits/shared_ptr_base.h (__shared_ptr<>::
__shared_ptr(const unique_ptr<_Up, _Up_Deleter>&),
operator=(const unique_ptr<_Up, _Up_Deleter>&)): Likewise.
* testsuite/20_util/unique_ptr/modifiers/reset_neg.cc: Adjust.
* testsuite/20_util/unique_ptr/assign/assign_neg.cc: Likewise.
* testsuite/20_util/shared_ptr/cons/unique_ptr_neg.cc: Likewise.
* testsuite/20_util/shared_ptr/assign/unique_ptr_lvalue_neg.cc:
Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@156807 138bc75d-0d04-0410-961f-82ee72b054a4

libstdc++-v3/ChangeLog
libstdc++-v3/include/bits/shared_ptr.h
libstdc++-v3/include/bits/shared_ptr_base.h
libstdc++-v3/include/bits/unique_ptr.h
libstdc++-v3/testsuite/20_util/shared_ptr/assign/unique_ptr_lvalue_neg.cc
libstdc++-v3/testsuite/20_util/shared_ptr/cons/unique_ptr_neg.cc
libstdc++-v3/testsuite/20_util/unique_ptr/assign/assign_neg.cc
libstdc++-v3/testsuite/20_util/unique_ptr/modifiers/reset_neg.cc

index 4500583..183a4cc 100644 (file)
@@ -1,3 +1,21 @@
+2010-02-16  Paolo Carlini  <paolo.carlini@oracle.com>
+
+       * include/bits/unique_ptr.h: (unique_ptr<>::
+       unique_ptr(const unique_ptr<_Up, _Up_Deleter>&),
+       operator=(const unique_ptr<_Up, _Up_Deleter>&)): Remove, redundant,
+       per DR 1303.
+       * include/bits/shared_ptr.h (shared_ptr<>::
+       shared_ptr(const unique_ptr<_Up, _Up_Deleter>&),
+       operator=(const unique_ptr<_Up, _Up_Deleter>&)): Likewise.
+       * include/bits/shared_ptr_base.h (__shared_ptr<>::
+       __shared_ptr(const unique_ptr<_Up, _Up_Deleter>&),
+       operator=(const unique_ptr<_Up, _Up_Deleter>&)): Likewise.
+       * testsuite/20_util/unique_ptr/modifiers/reset_neg.cc: Adjust.
+       * testsuite/20_util/unique_ptr/assign/assign_neg.cc: Likewise.
+       * testsuite/20_util/shared_ptr/cons/unique_ptr_neg.cc: Likewise.
+       * testsuite/20_util/shared_ptr/assign/unique_ptr_lvalue_neg.cc:
+       Likewise.
+
 2010-02-15  Paolo Carlini  <paolo.carlini@oracle.com>
 
        * testsuite/ext/median.cc: Adjust.
index 8119ad3..3e909f5 100644 (file)
@@ -60,7 +60,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
 
   /// 2.2.3.7 shared_ptr I/O
   template<typename _Ch, typename _Tr, typename _Tp, _Lock_policy _Lp>
-    std::basic_ostream<_Ch, _Tr>&
+    inline std::basic_ostream<_Ch, _Tr>&
     operator<<(std::basic_ostream<_Ch, _Tr>& __os,
               const __shared_ptr<_Tp, _Lp>& __p)
     {
@@ -119,7 +119,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
        *
        *  __shared_ptr will release __p by calling __d(__p)
        */
-       template<typename _Tp1, typename _Deleter>
+      template<typename _Tp1, typename _Deleter>
        shared_ptr(_Tp1* __p, _Deleter __d) : __shared_ptr<_Tp>(__p, __d) { }
 
       /**
@@ -210,9 +210,6 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
 #endif
 
       template<typename _Tp1, typename _Del>
-       explicit shared_ptr(const std::unique_ptr<_Tp1, _Del>&) = delete;
-
-      template<typename _Tp1, typename _Del>
        explicit shared_ptr(std::unique_ptr<_Tp1, _Del>&& __r)
        : __shared_ptr<_Tp>(std::move(__r)) { }
 
@@ -251,10 +248,6 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
 
       template<typename _Tp1, typename _Del>
        shared_ptr&
-       operator=(const std::unique_ptr<_Tp1, _Del>& __r) = delete;
-
-      template<typename _Tp1, typename _Del>
-       shared_ptr&
        operator=(std::unique_ptr<_Tp1, _Del>&& __r)
        {
          this->__shared_ptr<_Tp>::operator=(std::move(__r));
index ff1282d..51bd51d 100644 (file)
@@ -1,6 +1,6 @@
 // shared_ptr and weak_ptr implementation details -*- C++ -*-
 
-// Copyright (C) 2007, 2008, 2009 Free Software Foundation, Inc.
+// Copyright (C) 2007, 2008, 2009, 2010 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
@@ -606,9 +606,6 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
          _M_ptr = __r._M_ptr;
        }
 
-      template<typename _Tp1, typename _Del>
-       explicit __shared_ptr(const std::unique_ptr<_Tp1, _Del>&) = delete;
-
       // If an exception is thrown this constructor has no effect.
       template<typename _Tp1, typename _Del>
        explicit __shared_ptr(std::unique_ptr<_Tp1, _Del>&& __r)
@@ -670,10 +667,6 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
 
       template<typename _Tp1, typename _Del>
        __shared_ptr&
-       operator=(const std::unique_ptr<_Tp1, _Del>& __r) = delete;
-
-      template<typename _Tp1, typename _Del>
-       __shared_ptr&
        operator=(std::unique_ptr<_Tp1, _Del>&& __r)
        {
          __shared_ptr(std::move(__r)).swap(*this);
index 9a34b03..7134865 100644 (file)
@@ -149,7 +149,8 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
       }
 
       // Observers.
-      typename std::add_lvalue_reference<element_type>::type operator*() const
+      typename std::add_lvalue_reference<element_type>::type
+      operator*() const
       {
        _GLIBCXX_DEBUG_ASSERT(get() != 0);
        return *get();
@@ -207,15 +208,8 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
 
       // Disable copy from lvalue.
       unique_ptr(const unique_ptr&) = delete;
-
-      template<typename _Up, typename _Up_Deleter> 
-        unique_ptr(const unique_ptr<_Up, _Up_Deleter>&) = delete;
-
       unique_ptr& operator=(const unique_ptr&) = delete;
 
-      template<typename _Up, typename _Up_Deleter> 
-        unique_ptr& operator=(const unique_ptr<_Up, _Up_Deleter>&) = delete;
-
     private:
       __tuple_type _M_t;
   };
index b4fc826..dae967b 100644 (file)
@@ -1,7 +1,7 @@
 // { dg-options "-std=gnu++0x" }
 // { dg-do compile }
 
-// Copyright (C) 2008, 2009 Free Software Foundation
+// Copyright (C) 2008, 2009, 2010 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
@@ -35,7 +35,7 @@ test01()
 
   std::shared_ptr<A> a;
   std::unique_ptr<A> u;
-  a = u; // { dg-error "used here" }
+  a = u; // { dg-error "cannot bind" }
 
   return 0;
 }
@@ -46,4 +46,4 @@ main()
   test01();
   return 0;
 }
-// { dg-excess-errors "deleted function" }
+// { dg-excess-errors "initializing argument" }
index 37bdb0b..0e2fd68 100644 (file)
@@ -1,7 +1,7 @@
 // { dg-options "-std=gnu++0x" }
 // { dg-do compile }
 
-// Copyright (C) 2008, 2009 Free Software Foundation
+// Copyright (C) 2008, 2009, 2010 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
@@ -34,7 +34,7 @@ test01()
   bool test __attribute__((unused)) = true;
 
   std::unique_ptr<A> a;
-  std::shared_ptr<A> p(a); // { dg-error "used here" }
+  std::shared_ptr<A> p(a); // { dg-error "cannot bind" }
 
   return 0;
 }
@@ -45,4 +45,4 @@ main()
   test01();
   return 0;
 }
-// { dg-excess-errors "deleted function" }
+// { dg-excess-errors "initializing argument" }
index e5a1073..1813239 100644 (file)
@@ -49,7 +49,7 @@ test03()
   std::unique_ptr<int[2]> p2 = p1;
 }
 
-// { dg-error "deleted function" "" { target *-*-* } 354 }
+// { dg-error "deleted function" "" { target *-*-* } 348 }
 // { dg-error "used here" "" { target *-*-* } 42 }
 // { dg-error "no matching" "" { target *-*-* } 48 }
 // { dg-warning "candidates are" "" { target *-*-* } 115 }
@@ -57,5 +57,5 @@ test03()
 // { dg-warning "note" "" { target *-*-* } 103 }
 // { dg-warning "note" "" { target *-*-* } 98 }
 // { dg-warning "note" "" { target *-*-* } 92 }
-// { dg-error "deleted function" "" { target *-*-* } 209 }
+// { dg-error "deleted function" "" { target *-*-* } 210 }
 // { dg-error "used here" "" { target *-*-* } 49 }
index d4c2b3a..61b7ae9 100644 (file)
@@ -36,4 +36,4 @@ void test01()
 }
 
 // { dg-error "used here" "" { target *-*-* } 35 } 
-// { dg-error "deleted function" "" { target *-*-* } 344 }
+// { dg-error "deleted function" "" { target *-*-* } 338 }