From: paolo Date: Fri, 5 Sep 2008 17:12:02 +0000 (+0000) Subject: 2008-09-05 Peter Dimov X-Git-Tag: upstream/4.9.2~39848 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=3a4d362a80dfcd16e50ac425037c05e814c2d1f1;p=platform%2Fupstream%2Flinaro-gcc.git 2008-09-05 Peter Dimov * testsuite/20_util/shared_ptr/cons/unique_ptr_deleter_ref_2.cc: New. 2008-09-05 Paolo Carlini * testsuite/20_util/shared_ptr/cons/unique_ptr_deleter_ref.cc: Rename to... * testsuite/20_util/shared_ptr/cons/unique_ptr_deleter_ref_1.cc: ... this. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@140039 138bc75d-0d04-0410-961f-82ee72b054a4 --- diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index f82f441..2fb1197 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,14 @@ +2008-09-05 Peter Dimov + + * testsuite/20_util/shared_ptr/cons/unique_ptr_deleter_ref_2.cc: New. + +2008-09-05 Paolo Carlini + + * testsuite/20_util/shared_ptr/cons/unique_ptr_deleter_ref.cc: Rename + to... + * testsuite/20_util/shared_ptr/cons/unique_ptr_deleter_ref_1.cc: ... + this. + 2008-09-04 Jonathan Wakely PR libstdc++/36962 diff --git a/libstdc++-v3/testsuite/20_util/shared_ptr/cons/unique_ptr_deleter_ref.cc b/libstdc++-v3/testsuite/20_util/shared_ptr/cons/unique_ptr_deleter_ref_1.cc similarity index 100% rename from libstdc++-v3/testsuite/20_util/shared_ptr/cons/unique_ptr_deleter_ref.cc rename to libstdc++-v3/testsuite/20_util/shared_ptr/cons/unique_ptr_deleter_ref_1.cc diff --git a/libstdc++-v3/testsuite/20_util/shared_ptr/cons/unique_ptr_deleter_ref_2.cc b/libstdc++-v3/testsuite/20_util/shared_ptr/cons/unique_ptr_deleter_ref_2.cc new file mode 100644 index 0000000..0b8fd91 --- /dev/null +++ b/libstdc++-v3/testsuite/20_util/shared_ptr/cons/unique_ptr_deleter_ref_2.cc @@ -0,0 +1,64 @@ +// { dg-options "-std=gnu++0x" } + +// Copyright (C) 2008 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 +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 2, or (at your option) +// 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. + +// You should have received a copy of the GNU General Public License along +// with this library; see the file COPYING. If not, write to the Free +// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, +// USA. + +// 20.7.12.2 Template class shared_ptr [util.smartptr.shared] + +#include +#include +#include + +struct A { }; + +struct D { + typedef void result_type; + void operator()(A* p) { delete p; ++count; } + int count; +}; + + +// 20.7.12.2.1 shared_ptr constructors [util.smartptr.shared.const] + +// Construction from unique_ptr +// See: http://gcc.gnu.org/ml/libstdc++/2008-09/msg00070.html. +int +test01() +{ + bool test __attribute__((unused)) = true; + + D d; + std::unique_ptr p1(new A, d); + + std::shared_ptr p2(std::move(p1)); + + typedef std::reference_wrapper D2; + D2* p3 = std::get_deleter(p2); + + VERIFY( p3 != 0 ); + VERIFY( &p3->get() == &d ); + + return 0; +} + +int +main() +{ + test01(); + return 0; +}