Fix static assert problem on gcc; remove XFAILs that I put in in r274250

llvm-svn: 274285
This commit is contained in:
Marshall Clow 2016-06-30 22:05:45 +00:00
parent 29711c0d83
commit 3b8669edbf
8 changed files with 6 additions and 18 deletions

View File

@ -938,10 +938,6 @@ private:
typedef allocator_traits<__node_base_allocator> __node_base_traits;
static_assert((is_same<__node_base_pointer, typename __node_base_traits::pointer>::value),
"Allocator does not rebind pointers in a sane manner.");
static_assert((is_copy_constructible<key_equal>::value),
"Predicate must be copy-constructible.");
static_assert((is_copy_constructible<hasher>::value),
"Hasher must be copy-constructible.");
private:
@ -1479,6 +1475,10 @@ __hash_table<_Tp, _Hash, _Equal, _Alloc>::__hash_table(__hash_table&& __u,
template <class _Tp, class _Hash, class _Equal, class _Alloc>
__hash_table<_Tp, _Hash, _Equal, _Alloc>::~__hash_table()
{
static_assert((is_copy_constructible<key_equal>::value),
"Predicate must be copy-constructible.");
static_assert((is_copy_constructible<hasher>::value),
"Hasher must be copy-constructible.");
__deallocate(__p1_.first().__next_);
#if _LIBCPP_DEBUG_LEVEL >= 2
__get_db()->__erase_c(this);

View File

@ -946,8 +946,6 @@ private:
typedef allocator_traits<__node_base_allocator> __node_base_traits;
static_assert((is_same<__node_base_pointer, typename __node_base_traits::pointer>::value),
"Allocator does not rebind pointers in a sane manner.");
static_assert((is_copy_constructible<value_compare>::value),
"Comparator must be copy-constructible.");
private:
__node_pointer __begin_node_;
@ -1707,6 +1705,8 @@ __tree<_Tp, _Compare, _Allocator>::operator=(__tree&& __t)
template <class _Tp, class _Compare, class _Allocator>
__tree<_Tp, _Compare, _Allocator>::~__tree()
{
static_assert((is_copy_constructible<value_compare>::value),
"Comparator must be copy-constructible.");
destroy(__root());
}

View File

@ -12,8 +12,6 @@
// Check that std::map and it's iterators can be instantiated with an incomplete
// type.
// XFAIL: gcc
#include <map>
struct A {

View File

@ -13,8 +13,6 @@
// map();
// XFAIL: gcc
#include <map>
struct X

View File

@ -12,8 +12,6 @@
// Check that std::multimap and it's iterators can be instantiated with an incomplete
// type.
// XFAIL: gcc
#include <map>
struct A {

View File

@ -13,8 +13,6 @@
// multimap();
// XFAIL: gcc
#include <map>
struct X

View File

@ -13,8 +13,6 @@
// Check that std::unordered_map and it's iterators can be instantiated with an incomplete
// type.
// XFAIL: gcc
#include <unordered_map>
template <class Tp>

View File

@ -13,8 +13,6 @@
// Check that std::unordered_multimap and it's iterators can be instantiated with an incomplete
// type.
// XFAIL: gcc
#include <unordered_map>
template <class Tp>