Fix experimental::pmr typedefs and add tests
The typedefs in <experimental/regex> and <experimental/string> don't need to be in the __cxx11 namespace, because they are only aliases and so will have the same mangled name as the underlying types. * include/experimental/regex: Remove begin/end macros for namespace. * include/experimental/string: Likewise. * testsuite/experimental/polymorphic_allocator/pmr_typedefs_deque.cc: New test. * testsuite/experimental/polymorphic_allocator/ pmr_typedefs_forward_list.cc: New test. * testsuite/experimental/polymorphic_allocator/pmr_typedefs_list.cc: New test. * testsuite/experimental/polymorphic_allocator/pmr_typedefs_map.cc: New test. * testsuite/experimental/polymorphic_allocator/pmr_typedefs_match.cc: New test. * testsuite/experimental/polymorphic_allocator/ pmr_typedefs_multimap.cc: New test. * testsuite/experimental/polymorphic_allocator/ pmr_typedefs_multiset.cc: New test. * testsuite/experimental/polymorphic_allocator/pmr_typedefs_set.cc: New test. * testsuite/experimental/polymorphic_allocator/pmr_typedefs_string.cc: New test. * testsuite/experimental/polymorphic_allocator/ pmr_typedefs_unordered_map.cc: New test. * testsuite/experimental/polymorphic_allocator/ pmr_typedefs_unordered_multimap.cc: New test. * testsuite/experimental/polymorphic_allocator/ pmr_typedefs_unordered_multiset.cc: New test. * testsuite/experimental/polymorphic_allocator/ pmr_typedefs_unordered_set.cc: New test. * testsuite/experimental/polymorphic_allocator/pmr_typedefs_vector.cc: New test. From-SVN: r263568
This commit is contained in:
parent
0c8956e09a
commit
b8eac4d064
17 changed files with 546 additions and 7 deletions
|
@ -1,5 +1,36 @@
|
|||
2018-08-15 Jonathan Wakely <jwakely@redhat.com>
|
||||
|
||||
* include/experimental/regex: Remove begin/end macros for namespace.
|
||||
* include/experimental/string: Likewise.
|
||||
* testsuite/experimental/polymorphic_allocator/pmr_typedefs_deque.cc:
|
||||
New test.
|
||||
* testsuite/experimental/polymorphic_allocator/
|
||||
pmr_typedefs_forward_list.cc: New test.
|
||||
* testsuite/experimental/polymorphic_allocator/pmr_typedefs_list.cc:
|
||||
New test.
|
||||
* testsuite/experimental/polymorphic_allocator/pmr_typedefs_map.cc:
|
||||
New test.
|
||||
* testsuite/experimental/polymorphic_allocator/pmr_typedefs_match.cc:
|
||||
New test.
|
||||
* testsuite/experimental/polymorphic_allocator/
|
||||
pmr_typedefs_multimap.cc: New test.
|
||||
* testsuite/experimental/polymorphic_allocator/
|
||||
pmr_typedefs_multiset.cc: New test.
|
||||
* testsuite/experimental/polymorphic_allocator/pmr_typedefs_set.cc:
|
||||
New test.
|
||||
* testsuite/experimental/polymorphic_allocator/pmr_typedefs_string.cc:
|
||||
New test.
|
||||
* testsuite/experimental/polymorphic_allocator/
|
||||
pmr_typedefs_unordered_map.cc: New test.
|
||||
* testsuite/experimental/polymorphic_allocator/
|
||||
pmr_typedefs_unordered_multimap.cc: New test.
|
||||
* testsuite/experimental/polymorphic_allocator/
|
||||
pmr_typedefs_unordered_multiset.cc: New test.
|
||||
* testsuite/experimental/polymorphic_allocator/
|
||||
pmr_typedefs_unordered_set.cc: New test.
|
||||
* testsuite/experimental/polymorphic_allocator/pmr_typedefs_vector.cc:
|
||||
New test.
|
||||
|
||||
* include/bits/uses_allocator.h (__uses_allocator_construct): Qualify
|
||||
calls to __uses_allocator_construct_impl and __use_alloc.
|
||||
* include/experimental/memory_resource
|
||||
|
|
|
@ -46,8 +46,6 @@ inline namespace fundamentals_v2
|
|||
{
|
||||
namespace pmr
|
||||
{
|
||||
_GLIBCXX_BEGIN_NAMESPACE_CXX11
|
||||
|
||||
template<typename _BidirectionalIterator>
|
||||
using match_results
|
||||
= std::match_results<_BidirectionalIterator, polymorphic_allocator<
|
||||
|
@ -58,7 +56,6 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11
|
|||
typedef match_results<string::const_iterator> smatch;
|
||||
typedef match_results<wstring::const_iterator> wsmatch;
|
||||
|
||||
_GLIBCXX_END_NAMESPACE_CXX11
|
||||
} // namespace pmr
|
||||
|
||||
} // namespace fundamentals_v2
|
||||
|
|
|
@ -62,9 +62,8 @@ inline namespace fundamentals_v2
|
|||
__cont.end());
|
||||
}
|
||||
|
||||
namespace pmr {
|
||||
_GLIBCXX_BEGIN_NAMESPACE_CXX11
|
||||
|
||||
namespace pmr
|
||||
{
|
||||
// basic_string using polymorphic allocator in namespace pmr
|
||||
template<typename _CharT, typename _Traits = char_traits<_CharT>>
|
||||
using basic_string =
|
||||
|
@ -77,7 +76,6 @@ inline namespace fundamentals_v2
|
|||
typedef basic_string<char32_t> u32string;
|
||||
typedef basic_string<wchar_t> wstring;
|
||||
|
||||
_GLIBCXX_END_NAMESPACE_CXX11
|
||||
} // namespace pmr
|
||||
} // namespace fundamentals_v2
|
||||
} // namespace experimental
|
||||
|
|
|
@ -0,0 +1,28 @@
|
|||
// Copyright (C) 2018 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-do compile { target c++14 } }
|
||||
|
||||
#include <experimental/deque>
|
||||
|
||||
namespace xpmr = std::experimental::pmr;
|
||||
|
||||
struct X { };
|
||||
|
||||
static_assert(std::is_same<xpmr::deque<X>,
|
||||
std::deque<X, xpmr::polymorphic_allocator<X>>>::value,
|
||||
"pmr::deque");
|
|
@ -0,0 +1,28 @@
|
|||
// Copyright (C) 2018 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-do compile { target c++14 } }
|
||||
|
||||
#include <experimental/forward_list>
|
||||
|
||||
namespace xpmr = std::experimental::pmr;
|
||||
|
||||
struct X { };
|
||||
|
||||
static_assert(std::is_same<xpmr::forward_list<X>,
|
||||
std::forward_list<X, xpmr::polymorphic_allocator<X>>>::value,
|
||||
"pmr::forward_list");
|
|
@ -0,0 +1,28 @@
|
|||
// Copyright (C) 2018 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-do compile { target c++14 } }
|
||||
|
||||
#include <experimental/list>
|
||||
|
||||
namespace xpmr = std::experimental::pmr;
|
||||
|
||||
struct X { };
|
||||
|
||||
static_assert(std::is_same<xpmr::list<X>,
|
||||
std::list<X, xpmr::polymorphic_allocator<X>>>::value,
|
||||
"pmr::list");
|
|
@ -0,0 +1,35 @@
|
|||
// Copyright (C) 2018 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-do compile { target c++14 } }
|
||||
|
||||
#include <experimental/map>
|
||||
|
||||
namespace xpmr = std::experimental::pmr;
|
||||
|
||||
struct X { };
|
||||
struct Y { };
|
||||
struct Cmp { bool operator()(X, X) const { return false; } };
|
||||
|
||||
static_assert(std::is_same<xpmr::map<X, Y>,
|
||||
std::map<X, Y, std::less<X>,
|
||||
xpmr::polymorphic_allocator<std::pair<const X, Y>>>>::value,
|
||||
"pmr::map");
|
||||
static_assert(std::is_same<xpmr::map<X, Y, Cmp>,
|
||||
std::map<X, Y, Cmp,
|
||||
xpmr::polymorphic_allocator<std::pair<const X, Y>>>>::value,
|
||||
"pmr::map");
|
|
@ -0,0 +1,49 @@
|
|||
// Copyright (C) 2018 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-do compile { target c++14 } }
|
||||
|
||||
#include <experimental/regex>
|
||||
|
||||
namespace xpmr = std::experimental::pmr;
|
||||
|
||||
struct X;
|
||||
static_assert(std::is_same<xpmr::match_results<X*>,
|
||||
std::match_results<X*,
|
||||
xpmr::polymorphic_allocator<std::sub_match<X*>>>>::value,
|
||||
"pmr::match_results");
|
||||
|
||||
static_assert(std::is_same<xpmr::cmatch,
|
||||
std::match_results<const char*,
|
||||
xpmr::polymorphic_allocator<std::sub_match<const char*>>>>::value,
|
||||
"pmr::cmatch");
|
||||
static_assert(std::is_same<xpmr::smatch,
|
||||
std::match_results<xpmr::string::const_iterator,
|
||||
xpmr::polymorphic_allocator<
|
||||
std::sub_match<xpmr::string::const_iterator>>>>::value,
|
||||
"pmr::smatch");
|
||||
#ifdef _GLIBCXX_USE_WCHAR_T
|
||||
static_assert(std::is_same<xpmr::wcmatch,
|
||||
std::match_results<const wchar_t*,
|
||||
xpmr::polymorphic_allocator<std::sub_match<const wchar_t*>>>>::value,
|
||||
"pmr::wcmatch");
|
||||
static_assert(std::is_same<xpmr::wsmatch,
|
||||
std::match_results<xpmr::wstring::const_iterator,
|
||||
xpmr::polymorphic_allocator<
|
||||
std::sub_match<xpmr::wstring::const_iterator>>>>::value,
|
||||
"pmr::wsmatch");
|
||||
#endif
|
|
@ -0,0 +1,35 @@
|
|||
// Copyright (C) 2018 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-do compile { target c++14 } }
|
||||
|
||||
#include <experimental/map>
|
||||
|
||||
namespace xpmr = std::experimental::pmr;
|
||||
|
||||
struct X { };
|
||||
struct Y { };
|
||||
struct Cmp { bool operator()(X, X) const { return false; } };
|
||||
|
||||
static_assert(std::is_same<xpmr::multimap<X, Y>,
|
||||
std::multimap<X, Y, std::less<X>,
|
||||
xpmr::polymorphic_allocator<std::pair<const X, Y>>>>::value,
|
||||
"pmr::multimap");
|
||||
static_assert(std::is_same<xpmr::multimap<X, Y, Cmp>,
|
||||
std::multimap<X, Y, Cmp,
|
||||
xpmr::polymorphic_allocator<std::pair<const X, Y>>>>::value,
|
||||
"pmr::multimap");
|
|
@ -0,0 +1,32 @@
|
|||
// Copyright (C) 2018 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-do compile { target c++14 } }
|
||||
|
||||
#include <experimental/set>
|
||||
|
||||
namespace xpmr = std::experimental::pmr;
|
||||
|
||||
struct X { };
|
||||
struct Cmp { bool operator()(X, X) const { return false; } };
|
||||
|
||||
static_assert(std::is_same<xpmr::multiset<X>,
|
||||
std::multiset<X, std::less<X>, xpmr::polymorphic_allocator<X>>>::value,
|
||||
"pmr::multiset");
|
||||
static_assert(std::is_same<xpmr::multiset<X, Cmp>,
|
||||
std::multiset<X, Cmp, xpmr::polymorphic_allocator<X>>>::value,
|
||||
"pmr::multiset");
|
|
@ -0,0 +1,32 @@
|
|||
// Copyright (C) 2018 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-do compile { target c++14 } }
|
||||
|
||||
#include <experimental/set>
|
||||
|
||||
namespace xpmr = std::experimental::pmr;
|
||||
|
||||
struct X { };
|
||||
struct Cmp { bool operator()(X, X) const { return false; } };
|
||||
|
||||
static_assert(std::is_same<xpmr::set<X>,
|
||||
std::set<X, std::less<X>, xpmr::polymorphic_allocator<X>>>::value,
|
||||
"pmr::set");
|
||||
static_assert(std::is_same<xpmr::set<X, Cmp>,
|
||||
std::set<X, Cmp, xpmr::polymorphic_allocator<X>>>::value,
|
||||
"pmr::set");
|
|
@ -0,0 +1,60 @@
|
|||
// Copyright (C) 2018 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-do compile { target c++14 } }
|
||||
|
||||
#include <experimental/string>
|
||||
|
||||
namespace xpmr = std::experimental::pmr;
|
||||
|
||||
struct T : std::char_traits<char> { };
|
||||
|
||||
static_assert(std::is_same<xpmr::basic_string<char>,
|
||||
std::basic_string<char, std::char_traits<char>,
|
||||
xpmr::polymorphic_allocator<char>>>::value,
|
||||
"pmr::basic_string");
|
||||
static_assert(std::is_same<xpmr::basic_string<char, T>,
|
||||
std::basic_string<char, T, xpmr::polymorphic_allocator<char>>>::value,
|
||||
"pmr::basic_string");
|
||||
|
||||
static_assert(std::is_same<xpmr::string,
|
||||
std::basic_string<char, std::char_traits<char>,
|
||||
xpmr::polymorphic_allocator<char>>>::value,
|
||||
"pmr::string");
|
||||
static_assert(std::is_same<xpmr::u16string,
|
||||
std::basic_string<char16_t, std::char_traits<char16_t>,
|
||||
xpmr::polymorphic_allocator<char16_t>>>::value,
|
||||
"pmr::u16string");
|
||||
static_assert(std::is_same<xpmr::u32string,
|
||||
std::basic_string<char32_t, std::char_traits<char32_t>,
|
||||
xpmr::polymorphic_allocator<char32_t>>>::value,
|
||||
"pmr::u32string");
|
||||
|
||||
#ifdef _GLIBCXX_USE_WCHAR_T
|
||||
static_assert(std::is_same<xpmr::basic_string<wchar_t>,
|
||||
std::basic_string<wchar_t, std::char_traits<wchar_t>,
|
||||
xpmr::polymorphic_allocator<wchar_t>>>::value,
|
||||
"pmr::basic_string<wchar_t>");
|
||||
static_assert(std::is_same<xpmr::basic_string<wchar_t, T>,
|
||||
std::basic_string<wchar_t, T, xpmr::polymorphic_allocator<wchar_t>>>::value,
|
||||
"pmr::basic_string<wchar_t>");
|
||||
|
||||
static_assert(std::is_same<xpmr::wstring,
|
||||
std::basic_string<wchar_t, std::char_traits<wchar_t>,
|
||||
xpmr::polymorphic_allocator<wchar_t>>>::value,
|
||||
"pmr::wstring");
|
||||
#endif
|
|
@ -0,0 +1,40 @@
|
|||
// Copyright (C) 2018 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-do compile { target c++14 } }
|
||||
|
||||
#include <experimental/unordered_map>
|
||||
|
||||
namespace xpmr = std::experimental::pmr;
|
||||
|
||||
struct X { };
|
||||
struct Y { };
|
||||
struct Hash { std::size_t operator()(X) const { return 0; } };
|
||||
struct Eq { bool operator()(X, X) const { return true; } };
|
||||
|
||||
static_assert(std::is_same<xpmr::unordered_map<X, Y>,
|
||||
std::unordered_map<X, Y, std::hash<X>, std::equal_to<X>,
|
||||
xpmr::polymorphic_allocator<std::pair<const X, Y>>>>::value,
|
||||
"pmr::unordered_map");
|
||||
static_assert(std::is_same<xpmr::unordered_map<X, Y, Hash>,
|
||||
std::unordered_map<X, Y, Hash, std::equal_to<X>,
|
||||
xpmr::polymorphic_allocator<std::pair<const X, Y>>>>::value,
|
||||
"pmr::unordered_map");
|
||||
static_assert(std::is_same<xpmr::unordered_map<X, Y, Hash, Eq>,
|
||||
std::unordered_map<X, Y, Hash, Eq,
|
||||
xpmr::polymorphic_allocator<std::pair<const X, Y>>>>::value,
|
||||
"pmr::unordered_map");
|
|
@ -0,0 +1,40 @@
|
|||
// Copyright (C) 2018 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-do compile { target c++14 } }
|
||||
|
||||
#include <experimental/unordered_map>
|
||||
|
||||
namespace xpmr = std::experimental::pmr;
|
||||
|
||||
struct X { };
|
||||
struct Y { };
|
||||
struct Hash { std::size_t operator()(X) const { return 0; } };
|
||||
struct Eq { bool operator()(X, X) const { return true; } };
|
||||
|
||||
static_assert(std::is_same<xpmr::unordered_multimap<X, Y>,
|
||||
std::unordered_multimap<X, Y, std::hash<X>, std::equal_to<X>,
|
||||
xpmr::polymorphic_allocator<std::pair<const X, Y>>>>::value,
|
||||
"pmr::unordered_multimap");
|
||||
static_assert(std::is_same<xpmr::unordered_multimap<X, Y, Hash>,
|
||||
std::unordered_multimap<X, Y, Hash, std::equal_to<X>,
|
||||
xpmr::polymorphic_allocator<std::pair<const X, Y>>>>::value,
|
||||
"pmr::unordered_multimap");
|
||||
static_assert(std::is_same<xpmr::unordered_multimap<X, Y, Hash, Eq>,
|
||||
std::unordered_multimap<X, Y, Hash, Eq,
|
||||
xpmr::polymorphic_allocator<std::pair<const X, Y>>>>::value,
|
||||
"pmr::unordered_multimap");
|
|
@ -0,0 +1,39 @@
|
|||
// Copyright (C) 2018 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-do compile { target c++14 } }
|
||||
|
||||
#include <experimental/unordered_set>
|
||||
|
||||
namespace xpmr = std::experimental::pmr;
|
||||
|
||||
struct X { };
|
||||
struct Hash { std::size_t operator()(X) const { return 0; } };
|
||||
struct Eq { bool operator()(X, X) const { return true; } };
|
||||
|
||||
static_assert(std::is_same<xpmr::unordered_multiset<X>,
|
||||
std::unordered_multiset<X, std::hash<X>, std::equal_to<X>,
|
||||
xpmr::polymorphic_allocator<X>>>::value,
|
||||
"pmr::unordered_multiset");
|
||||
static_assert(std::is_same<xpmr::unordered_multiset<X, Hash>,
|
||||
std::unordered_multiset<X, Hash, std::equal_to<X>,
|
||||
xpmr::polymorphic_allocator<X>>>::value,
|
||||
"pmr::unordered_multiset");
|
||||
static_assert(std::is_same<xpmr::unordered_multiset<X, Hash, Eq>,
|
||||
std::unordered_multiset<X, Hash, Eq,
|
||||
xpmr::polymorphic_allocator<X>>>::value,
|
||||
"pmr::unordered_multiset");
|
|
@ -0,0 +1,39 @@
|
|||
// Copyright (C) 2018 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-do compile { target c++14 } }
|
||||
|
||||
#include <experimental/unordered_set>
|
||||
|
||||
namespace xpmr = std::experimental::pmr;
|
||||
|
||||
struct X { };
|
||||
struct Hash { std::size_t operator()(X) const { return 0; } };
|
||||
struct Eq { bool operator()(X, X) const { return true; } };
|
||||
|
||||
static_assert(std::is_same<xpmr::unordered_set<X>,
|
||||
std::unordered_set<X, std::hash<X>, std::equal_to<X>,
|
||||
xpmr::polymorphic_allocator<X>>>::value,
|
||||
"pmr::unordered_set");
|
||||
static_assert(std::is_same<xpmr::unordered_set<X, Hash>,
|
||||
std::unordered_set<X, Hash, std::equal_to<X>,
|
||||
xpmr::polymorphic_allocator<X>>>::value,
|
||||
"pmr::unordered_set");
|
||||
static_assert(std::is_same<xpmr::unordered_set<X, Hash, Eq>,
|
||||
std::unordered_set<X, Hash, Eq,
|
||||
xpmr::polymorphic_allocator<X>>>::value,
|
||||
"pmr::unordered_set");
|
|
@ -0,0 +1,28 @@
|
|||
// Copyright (C) 2018 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-do compile { target c++14 } }
|
||||
|
||||
#include <experimental/vector>
|
||||
|
||||
namespace xpmr = std::experimental::pmr;
|
||||
|
||||
struct X { };
|
||||
|
||||
static_assert(std::is_same<xpmr::vector<X>,
|
||||
std::vector<X, xpmr::polymorphic_allocator<X>>>::value,
|
||||
"pmr::vector");
|
Loading…
Add table
Reference in a new issue