mirror of git://gcc.gnu.org/git/gcc.git
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
|
|
@ -1,5 +1,36 @@
|
||||||
2018-08-15 Jonathan Wakely <jwakely@redhat.com>
|
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
|
* include/bits/uses_allocator.h (__uses_allocator_construct): Qualify
|
||||||
calls to __uses_allocator_construct_impl and __use_alloc.
|
calls to __uses_allocator_construct_impl and __use_alloc.
|
||||||
* include/experimental/memory_resource
|
* include/experimental/memory_resource
|
||||||
|
|
|
||||||
|
|
@ -46,8 +46,6 @@ inline namespace fundamentals_v2
|
||||||
{
|
{
|
||||||
namespace pmr
|
namespace pmr
|
||||||
{
|
{
|
||||||
_GLIBCXX_BEGIN_NAMESPACE_CXX11
|
|
||||||
|
|
||||||
template<typename _BidirectionalIterator>
|
template<typename _BidirectionalIterator>
|
||||||
using match_results
|
using match_results
|
||||||
= std::match_results<_BidirectionalIterator, polymorphic_allocator<
|
= std::match_results<_BidirectionalIterator, polymorphic_allocator<
|
||||||
|
|
@ -58,7 +56,6 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11
|
||||||
typedef match_results<string::const_iterator> smatch;
|
typedef match_results<string::const_iterator> smatch;
|
||||||
typedef match_results<wstring::const_iterator> wsmatch;
|
typedef match_results<wstring::const_iterator> wsmatch;
|
||||||
|
|
||||||
_GLIBCXX_END_NAMESPACE_CXX11
|
|
||||||
} // namespace pmr
|
} // namespace pmr
|
||||||
|
|
||||||
} // namespace fundamentals_v2
|
} // namespace fundamentals_v2
|
||||||
|
|
|
||||||
|
|
@ -62,9 +62,8 @@ inline namespace fundamentals_v2
|
||||||
__cont.end());
|
__cont.end());
|
||||||
}
|
}
|
||||||
|
|
||||||
namespace pmr {
|
namespace pmr
|
||||||
_GLIBCXX_BEGIN_NAMESPACE_CXX11
|
{
|
||||||
|
|
||||||
// basic_string using polymorphic allocator in namespace pmr
|
// basic_string using polymorphic allocator in namespace pmr
|
||||||
template<typename _CharT, typename _Traits = char_traits<_CharT>>
|
template<typename _CharT, typename _Traits = char_traits<_CharT>>
|
||||||
using basic_string =
|
using basic_string =
|
||||||
|
|
@ -77,7 +76,6 @@ inline namespace fundamentals_v2
|
||||||
typedef basic_string<char32_t> u32string;
|
typedef basic_string<char32_t> u32string;
|
||||||
typedef basic_string<wchar_t> wstring;
|
typedef basic_string<wchar_t> wstring;
|
||||||
|
|
||||||
_GLIBCXX_END_NAMESPACE_CXX11
|
|
||||||
} // namespace pmr
|
} // namespace pmr
|
||||||
} // namespace fundamentals_v2
|
} // namespace fundamentals_v2
|
||||||
} // namespace experimental
|
} // 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…
Reference in New Issue