mirror of git://gcc.gnu.org/git/gcc.git
any (any::operator=(const any&)): Check for self-assignment.
* include/experimental/any (any::operator=(const any&)): Check for self-assignment. * testsuite/experimental/any/assign/self.cc: New. * testsuite/experimental/any/misc/any_cast_neg.cc: Adjust dg-error. From-SVN: r226393
This commit is contained in:
parent
173864e8f1
commit
2e3f48dc43
|
|
@ -1,3 +1,10 @@
|
||||||
|
2015-07-30 Jonathan Wakely <jwakely@redhat.com>
|
||||||
|
|
||||||
|
* include/experimental/any (any::operator=(const any&)): Check for
|
||||||
|
self-assignment.
|
||||||
|
* testsuite/experimental/any/assign/self.cc: New.
|
||||||
|
* testsuite/experimental/any/misc/any_cast_neg.cc: Adjust dg-error.
|
||||||
|
|
||||||
2015-07-29 Jonathan Wakely <jwakely@redhat.com>
|
2015-07-29 Jonathan Wakely <jwakely@redhat.com>
|
||||||
|
|
||||||
PR libstdc++/66829
|
PR libstdc++/66829
|
||||||
|
|
|
||||||
|
|
@ -175,6 +175,9 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
|
||||||
/// Copy the state of another object.
|
/// Copy the state of another object.
|
||||||
any& operator=(const any& __rhs)
|
any& operator=(const any& __rhs)
|
||||||
{
|
{
|
||||||
|
if (this == &__rhs)
|
||||||
|
return *this;
|
||||||
|
|
||||||
if (__rhs.empty())
|
if (__rhs.empty())
|
||||||
clear();
|
clear();
|
||||||
else
|
else
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,41 @@
|
||||||
|
// Copyright (C) 2015 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
|
||||||
|
// terms of the GNU General Public License as published by the
|
||||||
|
// Free Software Foundation; either version 3, 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 COPYING3. If not see
|
||||||
|
// <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
// { dg-options "-std=gnu++14" }
|
||||||
|
|
||||||
|
#include <experimental/any>
|
||||||
|
#include <testsuite_hooks.h>
|
||||||
|
|
||||||
|
void
|
||||||
|
test01()
|
||||||
|
{
|
||||||
|
using std::experimental::any;
|
||||||
|
|
||||||
|
any a;
|
||||||
|
a = a;
|
||||||
|
VERIFY( a.empty() );
|
||||||
|
|
||||||
|
a = 1;
|
||||||
|
a = a;
|
||||||
|
VERIFY( !a.empty() );
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
main()
|
||||||
|
{
|
||||||
|
test01();
|
||||||
|
}
|
||||||
|
|
@ -26,5 +26,5 @@ void test01()
|
||||||
using std::experimental::any_cast;
|
using std::experimental::any_cast;
|
||||||
|
|
||||||
const any y(1);
|
const any y(1);
|
||||||
any_cast<int&>(y); // { dg-error "qualifiers" "" { target { *-*-* } } 356 }
|
any_cast<int&>(y); // { dg-error "qualifiers" "" { target { *-*-* } } 359 }
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue