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:
Jonathan Wakely 2018-08-15 20:46:25 +01:00 committed by Jonathan Wakely
parent 0c8956e09a
commit b8eac4d064
17 changed files with 546 additions and 7 deletions

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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");

View File

@ -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");

View File

@ -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");

View File

@ -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");

View File

@ -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

View File

@ -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");

View File

@ -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");

View File

@ -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");

View File

@ -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

View File

@ -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");

View File

@ -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");

View File

@ -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");

View File

@ -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");

View File

@ -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");