diff options
author | Benjamin Kosnik <bkoz@redhat.com> | 2004-03-09 06:01:39 +0000 |
---|---|---|
committer | Benjamin Kosnik <bkoz@gcc.gnu.org> | 2004-03-09 06:01:39 +0000 |
commit | f1c4ca32d04cf16aa78c857acca00f7eebb9b9da (patch) | |
tree | 63ad669a56dbd71e0b98ac40f2a0eb06e569923c | |
parent | 5340bbea5a4b436138b1d6674480fa6f943dd3e0 (diff) | |
download | gcc-f1c4ca32d04cf16aa78c857acca00f7eebb9b9da.zip gcc-f1c4ca32d04cf16aa78c857acca00f7eebb9b9da.tar.gz gcc-f1c4ca32d04cf16aa78c857acca00f7eebb9b9da.tar.bz2 |
re PR c++/13658 ([testcase] namespace association vs. templates part one)
2004-03-08 Benjamin Kosnik <bkoz@redhat.com>
PR c++/13658
* testsuite/23_containers/deque/modifiers/swap.cc: New.
* testsuite/23_containers/list/modifiers/swap.cc: New.
* testsuite/23_containers/map/modifiers/swap.cc: New.
* testsuite/23_containers/multimap/modifiers/swap.cc: New.
* testsuite/23_containers/multiset/modifiers/swap.cc: New.
* testsuite/23_containers/set/modifiers/swap.cc: New.
* testsuite/23_containers/vector/modifiers/swap.cc: New.
From-SVN: r79151
8 files changed, 452 insertions, 0 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 2b4eea2..1538ef3 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,14 @@ +2004-03-08 Benjamin Kosnik <bkoz@redhat.com> + + PR c++/13658 + * testsuite/23_containers/deque/modifiers/swap.cc: New. + * testsuite/23_containers/list/modifiers/swap.cc: New. + * testsuite/23_containers/map/modifiers/swap.cc: New. + * testsuite/23_containers/multimap/modifiers/swap.cc: New. + * testsuite/23_containers/multiset/modifiers/swap.cc: New. + * testsuite/23_containers/set/modifiers/swap.cc: New. + * testsuite/23_containers/vector/modifiers/swap.cc: New. + 2004-03-08 Petur Runolfsson <peturr02@ru.is> PR libstdc++/12658 diff --git a/libstdc++-v3/testsuite/23_containers/deque/modifiers/swap.cc b/libstdc++-v3/testsuite/23_containers/deque/modifiers/swap.cc new file mode 100644 index 0000000..12cfa74 --- /dev/null +++ b/libstdc++-v3/testsuite/23_containers/deque/modifiers/swap.cc @@ -0,0 +1,63 @@ +// Copyright (C) 2004 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, 59 Temple Place - Suite 330, Boston, MA 02111-1307, +// USA. + +#include <deque> +#include <testsuite_hooks.h> + +struct T { int i; }; + +int swap_calls; + +namespace std +{ + template<> + void + deque<T, allocator<T> >::swap(deque<T, allocator<T> >&) + { ++swap_calls; } +} + +// Should use deque specialization for swap. +void test01() +{ + bool test __attribute__((unused)) = true; + std::deque<T> A; + std::deque<T> B; + swap_calls = 0; + std::swap(A, B); + VERIFY(1 == swap_calls); +} + +// Should use deque specialization for swap. +void test02() +{ + bool test __attribute__((unused)) = true; + using namespace std; + deque<T> A; + deque<T> B; + swap_calls = 0; + swap(A, B); + VERIFY(1 == swap_calls); +} + +// See c++/13658 for background info. +int main() +{ + test01(); + test02(); + return 0; +} diff --git a/libstdc++-v3/testsuite/23_containers/list/modifiers/swap.cc b/libstdc++-v3/testsuite/23_containers/list/modifiers/swap.cc new file mode 100644 index 0000000..d20dec0 --- /dev/null +++ b/libstdc++-v3/testsuite/23_containers/list/modifiers/swap.cc @@ -0,0 +1,63 @@ +// Copyright (C) 2004 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, 59 Temple Place - Suite 330, Boston, MA 02111-1307, +// USA. + +#include <list> +#include <testsuite_hooks.h> + +struct T { int i; }; + +int swap_calls; + +namespace std +{ + template<> + void + list<T, allocator<T> >::swap(list<T, allocator<T> >&) + { ++swap_calls; } +} + +// Should use list specialization for swap. +void test01() +{ + bool test __attribute__((unused)) = true; + std::list<T> A; + std::list<T> B; + swap_calls = 0; + std::swap(A, B); + VERIFY(1 == swap_calls); +} + +// Should use list specialization for swap. +void test02() +{ + bool test __attribute__((unused)) = true; + using namespace std; + list<T> A; + list<T> B; + swap_calls = 0; + swap(A, B); + VERIFY(1 == swap_calls); +} + +// See c++/13658 for background info. +int main() +{ + test01(); + test02(); + return 0; +} diff --git a/libstdc++-v3/testsuite/23_containers/map/modifiers/swap.cc b/libstdc++-v3/testsuite/23_containers/map/modifiers/swap.cc new file mode 100644 index 0000000..8fb48cb --- /dev/null +++ b/libstdc++-v3/testsuite/23_containers/map/modifiers/swap.cc @@ -0,0 +1,63 @@ +// Copyright (C) 2004 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, 59 Temple Place - Suite 330, Boston, MA 02111-1307, +// USA. + +#include <map> +#include <testsuite_hooks.h> + +struct T { int i; }; + +int swap_calls; + +namespace std +{ + template<> + void + map<T, int>::swap(map<T, int>&) + { ++swap_calls; } +} + +// Should use map specialization for swap. +void test01() +{ + bool test __attribute__((unused)) = true; + std::map<T, int> A; + std::map<T, int> B; + swap_calls = 0; + std::swap(A, B); + VERIFY(1 == swap_calls); +} + +// Should use map specialization for swap. +void test02() +{ + bool test __attribute__((unused)) = true; + using namespace std; + map<T, int> A; + map<T, int> B; + swap_calls = 0; + swap(A, B); + VERIFY(1 == swap_calls); +} + +// See c++/13658 for background info. +int main() +{ + test01(); + test02(); + return 0; +} diff --git a/libstdc++-v3/testsuite/23_containers/multimap/modifiers/swap.cc b/libstdc++-v3/testsuite/23_containers/multimap/modifiers/swap.cc new file mode 100644 index 0000000..34425bd --- /dev/null +++ b/libstdc++-v3/testsuite/23_containers/multimap/modifiers/swap.cc @@ -0,0 +1,63 @@ +// Copyright (C) 2004 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, 59 Temple Place - Suite 330, Boston, MA 02111-1307, +// USA. + +#include <map> +#include <testsuite_hooks.h> + +struct T { int i; }; + +int swap_calls; + +namespace std +{ + template<> + void + multimap<T, int>::swap(multimap<T, int>&) + { ++swap_calls; } +} + +// Should use multimap specialization for swap. +void test01() +{ + bool test __attribute__((unused)) = true; + std::multimap<T, int> A; + std::multimap<T, int> B; + swap_calls = 0; + std::swap(A, B); + VERIFY(1 == swap_calls); +} + +// Should use multimap specialization for swap. +void test02() +{ + bool test __attribute__((unused)) = true; + using namespace std; + multimap<T, int> A; + multimap<T, int> B; + swap_calls = 0; + swap(A, B); + VERIFY(1 == swap_calls); +} + +// See c++/13658 for background info. +int main() +{ + test01(); + test02(); + return 0; +} diff --git a/libstdc++-v3/testsuite/23_containers/multiset/modifiers/swap.cc b/libstdc++-v3/testsuite/23_containers/multiset/modifiers/swap.cc new file mode 100644 index 0000000..809e153 --- /dev/null +++ b/libstdc++-v3/testsuite/23_containers/multiset/modifiers/swap.cc @@ -0,0 +1,63 @@ +// Copyright (C) 2004 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, 59 Temple Place - Suite 330, Boston, MA 02111-1307, +// USA. + +#include <set> +#include <testsuite_hooks.h> + +struct T { int i; }; + +int swap_calls; + +namespace std +{ + template<> + void + multiset<T>::swap(multiset<T>&) + { ++swap_calls; } +} + +// Should use multiset specialization for swap. +void test01() +{ + bool test __attribute__((unused)) = true; + std::multiset<T> A; + std::multiset<T> B; + swap_calls = 0; + std::swap(A, B); + VERIFY(1 == swap_calls); +} + +// Should use multiset specialization for swap. +void test02() +{ + bool test __attribute__((unused)) = true; + using namespace std; + multiset<T> A; + multiset<T> B; + swap_calls = 0; + swap(A, B); + VERIFY(1 == swap_calls); +} + +// See c++/13658 for background info. +int main() +{ + test01(); + test02(); + return 0; +} diff --git a/libstdc++-v3/testsuite/23_containers/set/modifiers/swap.cc b/libstdc++-v3/testsuite/23_containers/set/modifiers/swap.cc new file mode 100644 index 0000000..dbf3b83 --- /dev/null +++ b/libstdc++-v3/testsuite/23_containers/set/modifiers/swap.cc @@ -0,0 +1,63 @@ +// Copyright (C) 2004 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, 59 Temple Place - Suite 330, Boston, MA 02111-1307, +// USA. + +#include <set> +#include <testsuite_hooks.h> + +struct T { int i; }; + +int swap_calls; + +namespace std +{ + template<> + void + set<T>::swap(set<T>&) + { ++swap_calls; } +} + +// Should use set specialization for swap. +void test01() +{ + bool test __attribute__((unused)) = true; + std::set<T> A; + std::set<T> B; + swap_calls = 0; + std::swap(A, B); + VERIFY(1 == swap_calls); +} + +// Should use set specialization for swap. +void test02() +{ + bool test __attribute__((unused)) = true; + using namespace std; + set<T> A; + set<T> B; + swap_calls = 0; + swap(A, B); + VERIFY(1 == swap_calls); +} + +// See c++/13658 for background info. +int main() +{ + test01(); + test02(); + return 0; +} diff --git a/libstdc++-v3/testsuite/23_containers/vector/modifiers/swap.cc b/libstdc++-v3/testsuite/23_containers/vector/modifiers/swap.cc new file mode 100644 index 0000000..3122aa19 --- /dev/null +++ b/libstdc++-v3/testsuite/23_containers/vector/modifiers/swap.cc @@ -0,0 +1,63 @@ +// Copyright (C) 2004 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, 59 Temple Place - Suite 330, Boston, MA 02111-1307, +// USA. + +#include <vector> +#include <testsuite_hooks.h> + +struct T { int i; }; + +int swap_calls; + +namespace std +{ + template<> + void + vector<T, allocator<T> >::swap(vector<T, allocator<T> >&) + { ++swap_calls; } +} + +// Should use vector specialization for swap. +void test01() +{ + bool test __attribute__((unused)) = true; + std::vector<T> A; + std::vector<T> B; + swap_calls = 0; + std::swap(A, B); + VERIFY(1 == swap_calls); +} + +// Should use vector specialization for swap. +void test02() +{ + bool test __attribute__((unused)) = true; + using namespace std; + vector<T> A; + vector<T> B; + swap_calls = 0; + swap(A, B); + VERIFY(1 == swap_calls); +} + +// See c++/13658 for background info. +int main() +{ + test01(); + test02(); + return 0; +} |