This is the mail archive of the
libstdc++@gcc.gnu.org
mailing list for the libstdc++ project.
[v3] Add missing pointer / const_pointer typedefs to the unordered containers
- From: Paolo Carlini <paolo dot carlini at oracle dot com>
- To: Gcc Patch List <gcc-patches at gcc dot gnu dot org>
- Cc: libstdc++ <libstdc++ at gcc dot gnu dot org>
- Date: Wed, 27 Aug 2008 21:29:14 +0200
- Subject: [v3] Add missing pointer / const_pointer typedefs to the unordered containers
Hi,
tested x86_64-linux, committed to mainline.
Paolo.
////////////////////
2008-08-27 Paolo Carlini <paolo.carlini@oracle.com>
* include/tr1_impl/hashtable (_Hashtable<>): Add missing pointer and
const_pointer typedefs.
* testsuite/tr1/6_containers/unordered_set/requirements/typedef.cc:
Add.
* testsuite/tr1/6_containers/unordered_map/requirements/typedef.cc:
Likewise.
* testsuite/tr1/6_containers/unordered_multiset/requirements/
typedef.cc: Likewise.
* testsuite/tr1/6_containers/unordered_multimap/requirements/
typedef.cc: Likewise.
* testsuite/23_containers/unordered_set/requirements/typedef.cc:
Likewise.
* testsuite/23_containers/unordered_map/requirements/typedef.cc:
Likewise.
* testsuite/23_containers/unordered_multiset/requirements/typedef.cc:
Likewise.
* testsuite/23_containers/unordered_multimap/requirements/typedef.cc:
Likewise.
Index: include/tr1_impl/hashtable
===================================================================
*** include/tr1_impl/hashtable (revision 139627)
--- include/tr1_impl/hashtable (working copy)
*************** _GLIBCXX_BEGIN_NAMESPACE_TR1
*** 149,154 ****
--- 149,156 ----
// hasher, if present, comes from _Hash_code_base.
typedef typename _Allocator::difference_type difference_type;
typedef typename _Allocator::size_type size_type;
+ typedef typename _Allocator::pointer pointer;
+ typedef typename _Allocator::const_pointer const_pointer;
typedef typename _Allocator::reference reference;
typedef typename _Allocator::const_reference const_reference;
Index: testsuite/tr1/6_containers/unordered_multimap/requirements/typedef.cc
===================================================================
*** testsuite/tr1/6_containers/unordered_multimap/requirements/typedef.cc (revision 0)
--- testsuite/tr1/6_containers/unordered_multimap/requirements/typedef.cc (revision 0)
***************
*** 0 ****
--- 1,47 ----
+ // { dg-do compile }
+ // 2008-08-27 Paolo Carlini <paolo.carlini@oracle.com>
+
+ // 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.
+
+ // 6.3.4.6 unordered_multimap
+
+ #include <tr1/unordered_map>
+
+ void test01()
+ {
+ // Check for required typedefs
+ typedef std::tr1::unordered_multimap<int, int> test_type;
+
+ typedef test_type::key_type key_type;
+ typedef test_type::value_type value_type;
+ typedef test_type::mapped_type mapped_type;
+ typedef test_type::hasher hasher;
+ typedef test_type::key_equal key_equal;
+ typedef test_type::allocator_type allocator_type;
+ typedef test_type::pointer pointer;
+ typedef test_type::const_pointer const_pointer;
+ typedef test_type::reference reference;
+ typedef test_type::const_reference const_reference;
+ typedef test_type::size_type size_type;
+ typedef test_type::difference_type difference_type;
+ typedef test_type::iterator iterator;
+ typedef test_type::const_iterator const_iterator;
+ typedef test_type::local_iterator local_iterator;
+ typedef test_type::const_local_iterator const_local_iterator;
+ }
Index: testsuite/tr1/6_containers/unordered_set/requirements/typedef.cc
===================================================================
*** testsuite/tr1/6_containers/unordered_set/requirements/typedef.cc (revision 0)
--- testsuite/tr1/6_containers/unordered_set/requirements/typedef.cc (revision 0)
***************
*** 0 ****
--- 1,46 ----
+ // { dg-do compile }
+ // 2008-08-27 Paolo Carlini <paolo.carlini@oracle.com>
+
+ // 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.
+
+ // 6.3.4.3 unordered_set
+
+ #include <tr1/unordered_set>
+
+ void test01()
+ {
+ // Check for required typedefs
+ typedef std::tr1::unordered_set<int> test_type;
+
+ typedef test_type::key_type key_type;
+ typedef test_type::value_type value_type;
+ typedef test_type::hasher hasher;
+ typedef test_type::key_equal key_equal;
+ typedef test_type::allocator_type allocator_type;
+ typedef test_type::pointer pointer;
+ typedef test_type::const_pointer const_pointer;
+ typedef test_type::reference reference;
+ typedef test_type::const_reference const_reference;
+ typedef test_type::size_type size_type;
+ typedef test_type::difference_type difference_type;
+ typedef test_type::iterator iterator;
+ typedef test_type::const_iterator const_iterator;
+ typedef test_type::local_iterator local_iterator;
+ typedef test_type::const_local_iterator const_local_iterator;
+ }
Index: testsuite/tr1/6_containers/unordered_map/requirements/typedef.cc
===================================================================
*** testsuite/tr1/6_containers/unordered_map/requirements/typedef.cc (revision 0)
--- testsuite/tr1/6_containers/unordered_map/requirements/typedef.cc (revision 0)
***************
*** 0 ****
--- 1,47 ----
+ // { dg-do compile }
+ // 2008-08-27 Paolo Carlini <paolo.carlini@oracle.com>
+
+ // 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.
+
+ // 6.3.4.4 unordered_map
+
+ #include <tr1/unordered_map>
+
+ void test01()
+ {
+ // Check for required typedefs
+ typedef std::tr1::unordered_map<int, int> test_type;
+
+ typedef test_type::key_type key_type;
+ typedef test_type::value_type value_type;
+ typedef test_type::mapped_type mapped_type;
+ typedef test_type::hasher hasher;
+ typedef test_type::key_equal key_equal;
+ typedef test_type::allocator_type allocator_type;
+ typedef test_type::pointer pointer;
+ typedef test_type::const_pointer const_pointer;
+ typedef test_type::reference reference;
+ typedef test_type::const_reference const_reference;
+ typedef test_type::size_type size_type;
+ typedef test_type::difference_type difference_type;
+ typedef test_type::iterator iterator;
+ typedef test_type::const_iterator const_iterator;
+ typedef test_type::local_iterator local_iterator;
+ typedef test_type::const_local_iterator const_local_iterator;
+ }
Index: testsuite/tr1/6_containers/unordered_multiset/requirements/typedef.cc
===================================================================
*** testsuite/tr1/6_containers/unordered_multiset/requirements/typedef.cc (revision 0)
--- testsuite/tr1/6_containers/unordered_multiset/requirements/typedef.cc (revision 0)
***************
*** 0 ****
--- 1,46 ----
+ // { dg-do compile }
+ // 2008-08-27 Paolo Carlini <paolo.carlini@oracle.com>
+
+ // 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.
+
+ // 6.3.4.5 unordered_multiset
+
+ #include <tr1/unordered_set>
+
+ void test01()
+ {
+ // Check for required typedefs
+ typedef std::tr1::unordered_multiset<int> test_type;
+
+ typedef test_type::key_type key_type;
+ typedef test_type::value_type value_type;
+ typedef test_type::hasher hasher;
+ typedef test_type::key_equal key_equal;
+ typedef test_type::allocator_type allocator_type;
+ typedef test_type::pointer pointer;
+ typedef test_type::const_pointer const_pointer;
+ typedef test_type::reference reference;
+ typedef test_type::const_reference const_reference;
+ typedef test_type::size_type size_type;
+ typedef test_type::difference_type difference_type;
+ typedef test_type::iterator iterator;
+ typedef test_type::const_iterator const_iterator;
+ typedef test_type::local_iterator local_iterator;
+ typedef test_type::const_local_iterator const_local_iterator;
+ }
Index: testsuite/23_containers/unordered_map/requirements/typedef.cc
===================================================================
*** testsuite/23_containers/unordered_map/requirements/typedef.cc (revision 0)
--- testsuite/23_containers/unordered_map/requirements/typedef.cc (revision 0)
***************
*** 0 ****
--- 1,47 ----
+ // { dg-do compile }
+ // { dg-options "-std=gnu++0x" }
+
+ // 2008-08-27 Paolo Carlini <paolo.carlini@oracle.com>
+
+ // 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.
+
+ #include <unordered_map>
+
+ void test01()
+ {
+ // Check for required typedefs
+ typedef std::unordered_map<int, int> test_type;
+
+ typedef test_type::key_type key_type;
+ typedef test_type::value_type value_type;
+ typedef test_type::mapped_type mapped_type;
+ typedef test_type::hasher hasher;
+ typedef test_type::key_equal key_equal;
+ typedef test_type::allocator_type allocator_type;
+ typedef test_type::pointer pointer;
+ typedef test_type::const_pointer const_pointer;
+ typedef test_type::reference reference;
+ typedef test_type::const_reference const_reference;
+ typedef test_type::size_type size_type;
+ typedef test_type::difference_type difference_type;
+ typedef test_type::iterator iterator;
+ typedef test_type::const_iterator const_iterator;
+ typedef test_type::local_iterator local_iterator;
+ typedef test_type::const_local_iterator const_local_iterator;
+ }
Index: testsuite/23_containers/unordered_multimap/requirements/typedef.cc
===================================================================
*** testsuite/23_containers/unordered_multimap/requirements/typedef.cc (revision 0)
--- testsuite/23_containers/unordered_multimap/requirements/typedef.cc (revision 0)
***************
*** 0 ****
--- 1,47 ----
+ // { dg-do compile }
+ // { dg-options "-std=gnu++0x" }
+
+ // 2008-08-27 Paolo Carlini <paolo.carlini@oracle.com>
+
+ // 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.
+
+ #include <unordered_map>
+
+ void test01()
+ {
+ // Check for required typedefs
+ typedef std::unordered_multimap<int, int> test_type;
+
+ typedef test_type::key_type key_type;
+ typedef test_type::value_type value_type;
+ typedef test_type::mapped_type mapped_type;
+ typedef test_type::hasher hasher;
+ typedef test_type::key_equal key_equal;
+ typedef test_type::allocator_type allocator_type;
+ typedef test_type::pointer pointer;
+ typedef test_type::const_pointer const_pointer;
+ typedef test_type::reference reference;
+ typedef test_type::const_reference const_reference;
+ typedef test_type::size_type size_type;
+ typedef test_type::difference_type difference_type;
+ typedef test_type::iterator iterator;
+ typedef test_type::const_iterator const_iterator;
+ typedef test_type::local_iterator local_iterator;
+ typedef test_type::const_local_iterator const_local_iterator;
+ }
Index: testsuite/23_containers/unordered_set/requirements/typedef.cc
===================================================================
*** testsuite/23_containers/unordered_set/requirements/typedef.cc (revision 0)
--- testsuite/23_containers/unordered_set/requirements/typedef.cc (revision 0)
***************
*** 0 ****
--- 1,46 ----
+ // { dg-do compile }
+ // { dg-options "-std=gnu++0x" }
+
+ // 2008-08-27 Paolo Carlini <paolo.carlini@oracle.com>
+
+ // 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.
+
+ #include <unordered_set>
+
+ void test01()
+ {
+ // Check for required typedefs
+ typedef std::unordered_set<int> test_type;
+
+ typedef test_type::key_type key_type;
+ typedef test_type::value_type value_type;
+ typedef test_type::hasher hasher;
+ typedef test_type::key_equal key_equal;
+ typedef test_type::allocator_type allocator_type;
+ typedef test_type::pointer pointer;
+ typedef test_type::const_pointer const_pointer;
+ typedef test_type::reference reference;
+ typedef test_type::const_reference const_reference;
+ typedef test_type::size_type size_type;
+ typedef test_type::difference_type difference_type;
+ typedef test_type::iterator iterator;
+ typedef test_type::const_iterator const_iterator;
+ typedef test_type::local_iterator local_iterator;
+ typedef test_type::const_local_iterator const_local_iterator;
+ }
Index: testsuite/23_containers/unordered_multiset/requirements/typedef.cc
===================================================================
*** testsuite/23_containers/unordered_multiset/requirements/typedef.cc (revision 0)
--- testsuite/23_containers/unordered_multiset/requirements/typedef.cc (revision 0)
***************
*** 0 ****
--- 1,46 ----
+ // { dg-do compile }
+ // { dg-options "-std=gnu++0x" }
+
+ // 2008-08-27 Paolo Carlini <paolo.carlini@oracle.com>
+
+ // 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.
+
+ #include <unordered_set>
+
+ void test01()
+ {
+ // Check for required typedefs
+ typedef std::unordered_multiset<int> test_type;
+
+ typedef test_type::key_type key_type;
+ typedef test_type::value_type value_type;
+ typedef test_type::hasher hasher;
+ typedef test_type::key_equal key_equal;
+ typedef test_type::allocator_type allocator_type;
+ typedef test_type::pointer pointer;
+ typedef test_type::const_pointer const_pointer;
+ typedef test_type::reference reference;
+ typedef test_type::const_reference const_reference;
+ typedef test_type::size_type size_type;
+ typedef test_type::difference_type difference_type;
+ typedef test_type::iterator iterator;
+ typedef test_type::const_iterator const_iterator;
+ typedef test_type::local_iterator local_iterator;
+ typedef test_type::const_local_iterator const_local_iterator;
+ }