diff options
author | bkoz <bkoz@138bc75d-0d04-0410-961f-82ee72b054a4> | 2013-06-10 23:11:05 +0000 |
---|---|---|
committer | bkoz <bkoz@138bc75d-0d04-0410-961f-82ee72b054a4> | 2013-06-10 23:11:05 +0000 |
commit | 8544d95d3a6def0b5ee52341d685b3e8a40e8d1a (patch) | |
tree | 6e23bd35a1443585f8f865dfbba9b0e48f3b6f73 /libstdc++-v3/testsuite/23_containers/multiset/modifiers/dr130.cc | |
parent | f88fbcb9038a17c788b10653842a99e1e3227d24 (diff) | |
download | gcc-8544d95d3a6def0b5ee52341d685b3e8a40e8d1a.tar.gz |
2013-06-10 Benjamin Kosnik <bkoz@redhat.com>
* include/bits/c++config (_GLIBCXX_ABI_TAG_CXX11): Add.
* include/bits/stl_map.h (erase): Use abi_tag when C++11.
* include/bits/stl_multimap.h: Same.
* include/bits/stl_multiset.h: Same.
* include/bits/stl_set.h: Same.
* include/bits/stl_tree.h: Same.
* include/std/complex (real, imag): Use macro for abi_tag.
* testsuite/lib/libstdc++.exp: Disable inlinling with -fno-inline.
* testsuite/util/testsuite_containers.h (erase_external): New
declarations.
(erase_external_iterators): Same.
(linkage_check_cxx98_cxx11_erase): Same.
(linkage_check_cxx98_cxx11_erase_iterators): Same.
* testsuite/util/testsuite_shared.cc: Define.
* testsuite/23_containers/map/modifiers/erase/abi_tag.cc: New.
* testsuite/23_containers/map/modifiers/erase/
dr130-linkage-check.cc: New.
* testsuite/23_containers/multimap/modifiers/erase/abi_tag.cc: New.
* testsuite/23_containers/multimap/modifiers/erase/
dr130-linkage-check.cc: New.
* testsuite/23_containers/multiset/modifiers/erase/abi_tag.cc: New.
* testsuite/23_containers/multiset/modifiers/erase/
dr130-linkage-check.cc: New.
* testsuite/23_containers/set/modifiers/erase/abi_tag.cc: New.
* testsuite/23_containers/set/modifiers/erase/dr130-linkage-check.cc:
New.
* testsuite/ext/profile/mutex_extensions_neg.cc: Adjust line number.
* testsuite/23_containers/map/dr130.cc: Move...
* testsuite/23_containers/map/modifiers/dr130.cc: ...here.
* testsuite/23_containers/multimap/dr130.cc: Move ...
* testsuite/23_containers/multimap/modifiers/dr130.cc: ...here.
* testsuite/23_containers/multiset/dr130.cc: Move...
* testsuite/23_containers/multiset/modifiers/dr130.cc: ...here.
* testsuite/23_containers/set/dr130.cc: Move...
* testsuite/23_containers/set/modifiers/dr130.cc: ...here.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@199924 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libstdc++-v3/testsuite/23_containers/multiset/modifiers/dr130.cc')
-rw-r--r-- | libstdc++-v3/testsuite/23_containers/multiset/modifiers/dr130.cc | 85 |
1 files changed, 85 insertions, 0 deletions
diff --git a/libstdc++-v3/testsuite/23_containers/multiset/modifiers/dr130.cc b/libstdc++-v3/testsuite/23_containers/multiset/modifiers/dr130.cc new file mode 100644 index 00000000000..fc8aaf6d825 --- /dev/null +++ b/libstdc++-v3/testsuite/23_containers/multiset/modifiers/dr130.cc @@ -0,0 +1,85 @@ +// { dg-options "-std=gnu++0x" } + +// Copyright (C) 2009-2013 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/>. + + +// NOTE: This makes use of the fact that we know how moveable +// is implemented on multiset (via swap). If the implementation changed +// this test may begin to fail. + +#include <set> +#include <vector> +#include <testsuite_hooks.h> + +using namespace std; + +void +test01() +{ + bool test __attribute__((unused)) = true; + using namespace std; + + multiset<int> ms0; + typedef multiset<int>::iterator iterator; + typedef multiset<int>::const_iterator const_iterator; + typedef iterator insert_return_type; + + vector<insert_return_type> irt; + for ( int i = 1; i <= 4; ++i ) + for (int j = 1; j <= i; ++j) + irt.push_back( ms0.insert( i ) ); + + iterator pos1 = ms0.erase(irt[1]); + VERIFY( pos1 == irt[2] ); + + iterator pos2 = ms0.erase(irt[2]); + VERIFY( pos2 == irt[3] ); + + iterator pos3 = ms0.erase(irt[9]); + VERIFY( pos3 == ms0.end() ); +} + +void +test02() +{ + bool test __attribute__((unused)) = true; + using namespace std; + + multiset<int> ms0; + typedef multiset<int>::iterator iterator; + typedef multiset<int>::const_iterator const_iterator; + typedef iterator insert_return_type; + + vector<insert_return_type> irt; + for ( int i = 1; i <= 4; ++i ) + for (int j = 1; j <= i; ++j) + irt.push_back( ms0.insert( i ) ); + + iterator pos1 = ms0.erase(irt[3], irt[6]); + VERIFY( pos1 == irt[6] ); + + iterator pos2 = ms0.erase(irt[6], ++irt[9]); + VERIFY( pos2 == ms0.end() ); +} + +int +main() +{ + test01(); + test02(); +} |