diff options
author | Paolo Carlini <paolo@gcc.gnu.org> | 2008-09-05 17:12:02 +0000 |
---|---|---|
committer | Paolo Carlini <paolo@gcc.gnu.org> | 2008-09-05 17:12:02 +0000 |
commit | 57f59a4580be170866f930fc30de7037cdb46cc0 (patch) | |
tree | 75fc8650cd40b0149175cd7a14202fd7ac41295d | |
parent | c07cd2c7c4d054415c8c0674617aab31efe9c73f (diff) | |
download | gcc-57f59a4580be170866f930fc30de7037cdb46cc0.zip gcc-57f59a4580be170866f930fc30de7037cdb46cc0.tar.gz gcc-57f59a4580be170866f930fc30de7037cdb46cc0.tar.bz2 |
[multiple changes]
2008-09-05 Peter Dimov <pdimov@mmltd.net>
* testsuite/20_util/shared_ptr/cons/unique_ptr_deleter_ref_2.cc: New.
2008-09-05 Paolo Carlini <paolo.carlini@oracle.com>
* 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.
From-SVN: r140039
-rw-r--r-- | libstdc++-v3/ChangeLog | 11 | ||||
-rw-r--r-- | libstdc++-v3/testsuite/20_util/shared_ptr/cons/unique_ptr_deleter_ref_1.cc (renamed from libstdc++-v3/testsuite/20_util/shared_ptr/cons/unique_ptr_deleter_ref.cc) | 0 | ||||
-rw-r--r-- | libstdc++-v3/testsuite/20_util/shared_ptr/cons/unique_ptr_deleter_ref_2.cc | 64 |
3 files changed, 75 insertions, 0 deletions
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 <pdimov@mmltd.net> + + * testsuite/20_util/shared_ptr/cons/unique_ptr_deleter_ref_2.cc: New. + +2008-09-05 Paolo Carlini <paolo.carlini@oracle.com> + + * 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 <jwakely.gcc@gmail.com> 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 index 58d7c40..58d7c40 100644 --- 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 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 <memory> +#include <functional> +#include <testsuite_hooks.h> + +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<A, D&> p1(new A, d); + + std::shared_ptr<A> p2(std::move(p1)); + + typedef std::reference_wrapper<D> D2; + D2* p3 = std::get_deleter<D2>(p2); + + VERIFY( p3 != 0 ); + VERIFY( &p3->get() == &d ); + + return 0; +} + +int +main() +{ + test01(); + return 0; +} |