diff --git a/libcxx/include/__split_buffer b/libcxx/include/__split_buffer index 718fd88716cb..ea9d3d0463ef 100644 --- a/libcxx/include/__split_buffer +++ b/libcxx/include/__split_buffer @@ -98,11 +98,7 @@ public: _LIBCPP_INLINE_VISIBILITY void pop_back() {__destruct_at_end(__end_-1);} void __construct_at_end(size_type __n); - void __construct_at_end(size_type __n, false_type); - void __construct_at_end(size_type __n, true_type); void __construct_at_end(size_type __n, const_reference __x); - void __construct_at_end(size_type __n, const_reference __x, false_type); - void __construct_at_end(size_type __n, const_reference __x, true_type); template typename enable_if < @@ -192,16 +188,8 @@ __split_buffer<_Tp, _Allocator>::__invariants() const // Precondition: size() + __n <= capacity() // Postcondition: size() == size() + __n template -_LIBCPP_INLINE_VISIBILITY inline void __split_buffer<_Tp, _Allocator>::__construct_at_end(size_type __n) -{ - __construct_at_end(__n, __is_zero_default_constructible()); -} - -template -void -__split_buffer<_Tp, _Allocator>::__construct_at_end(size_type __n, false_type) { __alloc_rr& __a = this->__alloc(); do @@ -212,15 +200,6 @@ __split_buffer<_Tp, _Allocator>::__construct_at_end(size_type __n, false_type) } while (__n > 0); } -template -_LIBCPP_INLINE_VISIBILITY inline -void -__split_buffer<_Tp, _Allocator>::__construct_at_end(size_type __n, true_type) -{ - _STD::memset(this->__end_, 0, __n*sizeof(value_type)); - this->__end_ += __n; -} - // Copy constructs __n objects starting at __end_ from __x // throws if construction throws // Precondition: __n > 0 @@ -228,17 +207,8 @@ __split_buffer<_Tp, _Allocator>::__construct_at_end(size_type __n, true_type) // Postcondition: size() == old size() + __n // Postcondition: [i] == __x for all i in [size() - __n, __n) template -_LIBCPP_INLINE_VISIBILITY inline void __split_buffer<_Tp, _Allocator>::__construct_at_end(size_type __n, const_reference __x) -{ - __construct_at_end(__n, __x, integral_constant::value && - is_trivially_copy_assignable::value>()); -} - -template -void -__split_buffer<_Tp, _Allocator>::__construct_at_end(size_type __n, const_reference __x, false_type) { __alloc_rr& __a = this->__alloc(); do @@ -249,15 +219,6 @@ __split_buffer<_Tp, _Allocator>::__construct_at_end(size_type __n, const_referen } while (__n > 0); } -template -_LIBCPP_INLINE_VISIBILITY inline -void -__split_buffer<_Tp, _Allocator>::__construct_at_end(size_type __n, const_reference __x, true_type) -{ - _STD::fill_n(this->__end_, __n, __x); - this->__end_ += __n; -} - template template typename enable_if diff --git a/libcxx/include/string b/libcxx/include/string index 92f0ed19f777..469e3dd507ba 100644 --- a/libcxx/include/string +++ b/libcxx/include/string @@ -3641,10 +3641,6 @@ swap(basic_string<_CharT, _Traits, _Allocator>& __lhs, basic_string<_CharT, _Tra __lhs.swap(__rhs); } -template -struct __is_zero_default_constructible > - : public integral_constant::value> {}; - #ifndef _LIBCPP_HAS_NO_UNICODE_CHARS typedef basic_string u16string; diff --git a/libcxx/include/type_traits b/libcxx/include/type_traits index db1cdb7a4b8e..50e357c0660a 100644 --- a/libcxx/include/type_traits +++ b/libcxx/include/type_traits @@ -2302,9 +2302,6 @@ template struct _LIBCPP_VISIBLE is_pod #endif // _LIBCPP_HAS_TYPE_TRAITS -template struct __is_zero_default_constructible - : public integral_constant::value || is_empty<_Tp>::value> {}; - template inline _LIBCPP_INLINE_VISIBILITY void diff --git a/libcxx/include/vector b/libcxx/include/vector index 9b9f2e815edb..7c0fc7052597 100644 --- a/libcxx/include/vector +++ b/libcxx/include/vector @@ -624,14 +624,8 @@ private: void allocate(size_type __n); void deallocate(); _LIBCPP_INLINE_VISIBILITY size_type __recommend(size_type __new_size) const; - _LIBCPP_INLINE_VISIBILITY void __construct_at_end(size_type __n); - void __construct_at_end(size_type __n, false_type); - _LIBCPP_INLINE_VISIBILITY void __construct_at_end(size_type __n, true_type); - _LIBCPP_INLINE_VISIBILITY + void __construct_at_end(size_type __n); void __construct_at_end(size_type __n, const_reference __x); - void __construct_at_end(size_type __n, const_reference __x, false_type); - _LIBCPP_INLINE_VISIBILITY - void __construct_at_end(size_type __n, const_reference __x, true_type); template typename enable_if < @@ -741,16 +735,8 @@ vector<_Tp, _Allocator>::__recommend(size_type __new_size) const // Precondition: size() + __n <= capacity() // Postcondition: size() == size() + __n template -_LIBCPP_INLINE_VISIBILITY inline void vector<_Tp, _Allocator>::__construct_at_end(size_type __n) -{ - __construct_at_end(__n, __is_zero_default_constructible()); -} - -template -void -vector<_Tp, _Allocator>::__construct_at_end(size_type __n, false_type) { allocator_type& __a = this->__alloc(); do @@ -761,15 +747,6 @@ vector<_Tp, _Allocator>::__construct_at_end(size_type __n, false_type) } while (__n > 0); } -template -_LIBCPP_INLINE_VISIBILITY inline -void -vector<_Tp, _Allocator>::__construct_at_end(size_type __n, true_type) -{ - _STD::memset(this->__end_, 0, __n*sizeof(value_type)); - this->__end_ += __n; -} - // Copy constructs __n objects starting at __end_ from __x // throws if construction throws // Precondition: __n > 0 @@ -780,14 +757,6 @@ template _LIBCPP_INLINE_VISIBILITY inline void vector<_Tp, _Allocator>::__construct_at_end(size_type __n, const_reference __x) -{ - __construct_at_end(__n, __x, integral_constant::value && - is_trivially_copy_assignable::value>()); -} - -template -void -vector<_Tp, _Allocator>::__construct_at_end(size_type __n, const_reference __x, false_type) { allocator_type& __a = this->__alloc(); do @@ -798,15 +767,6 @@ vector<_Tp, _Allocator>::__construct_at_end(size_type __n, const_reference __x, } while (__n > 0); } -template -_LIBCPP_INLINE_VISIBILITY inline -void -vector<_Tp, _Allocator>::__construct_at_end(size_type __n, const_reference __x, true_type) -{ - _STD::fill_n(this->__end_, __n, __x); - this->__end_ += __n; -} - template template typename enable_if @@ -2764,10 +2724,6 @@ struct _LIBCPP_VISIBLE hash > {return __vec.__hash_code();} }; -template -struct __is_zero_default_constructible > - : public integral_constant::value> {}; - template _LIBCPP_INLINE_VISIBILITY inline bool