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>
|
||||
|
||||
PR libstdc++/66829
|
||||
|
|
|
|||
|
|
@ -175,6 +175,9 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
|
|||
/// Copy the state of another object.
|
||||
any& operator=(const any& __rhs)
|
||||
{
|
||||
if (this == &__rhs)
|
||||
return *this;
|
||||
|
||||
if (__rhs.empty())
|
||||
clear();
|
||||
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;
|
||||
|
||||
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