On 13/09/16 00:59 +0300, Ville Voutilainen wrote:
@@ -682,6 +686,98 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
                                         std::__iterator_category(__first)); }
#endif

+#if __cplusplus > 201402L
+  template <typename _ForwardIterator>
+    inline void
+    uninitialized_default_construct(_ForwardIterator __first,
+                                   _ForwardIterator __last)
+  {
+    for (; __first != __last; ++__first)
+      ::new (static_cast<void*>(std::__addressof(*__first)))
+         typename iterator_traits<_ForwardIterator>::value_type;
+  }

The bodies of all these function templates should be indented another
two spaces, to line up with the function name.

+  template <typename _Tp>
+    inline void
+    destroy_at(_Tp* __location)
+  {
+    __location->~_Tp();
+  }

This is now the third function template we've added recently doing
this :-) (although the ones in <variant> and <bits/exception_ptr.h>
have void* parameters).

+  template <typename _ForwardIterator>
+    inline void
+    destroy(_ForwardIterator __first, _ForwardIterator __last)
+  {
+    for (; __first != __last; ++__first)
+      destroy_at(std::__addressof(*__first));

This needs to be std::destroy_at

+  }
+
+  template <typename _ForwardIterator, typename _Size>
+    inline _ForwardIterator
+    destroy_n(_ForwardIterator __first, _Size __count)
+  {
+    for (; __count > 0; (void)++__first, --__count)
+      destroy_at(std::__addressof(*__first));

Ditto.

OK with those changes, thanks.

Reply via email to