[libcxx-commits] [PATCH] D110573: [libc++] Adds back_insert_iterator::__get_container.
Mark de Wever via Phabricator via libcxx-commits
libcxx-commits at lists.llvm.org
Thu Apr 7 12:56:23 PDT 2022
Mordante updated this revision to Diff 421320.
Mordante added a comment.
Rebase to trigger CI.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D110573/new/
https://reviews.llvm.org/D110573
Files:
libcxx/include/__iterator/back_insert_iterator.h
libcxx/test/libcxx/iterators/predef.iterators/insert.iterators/back.insert.iter.ops/get_container.pass.cpp
Index: libcxx/test/libcxx/iterators/predef.iterators/insert.iterators/back.insert.iter.ops/get_container.pass.cpp
===================================================================
--- /dev/null
+++ libcxx/test/libcxx/iterators/predef.iterators/insert.iterators/back.insert.iter.ops/get_container.pass.cpp
@@ -0,0 +1,37 @@
+//===----------------------------------------------------------------------===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+// <iterator>
+
+// back_insert_iterator
+
+// _Container* __get_container(); // constexpr in C++20
+
+#include <iterator>
+#include <vector>
+
+#include "test_macros.h"
+#include "nasty_containers.h"
+#include "test_constexpr_container.h"
+
+template <class C>
+TEST_CONSTEXPR_CXX20 bool test(C c) {
+ const std::back_insert_iterator<C> i(c);
+ assert(i.__get_container() == std::addressof(c));
+ return true;
+}
+
+int main(int, char**) {
+ test(std::vector<int>());
+ test(nasty_vector<int>());
+#if TEST_STD_VER >= 20
+ test(ConstexprFixedCapacityDeque<int, 10>());
+ static_assert(test(ConstexprFixedCapacityDeque<int, 10>()));
+#endif
+ return 0;
+}
Index: libcxx/include/__iterator/back_insert_iterator.h
===================================================================
--- libcxx/include/__iterator/back_insert_iterator.h
+++ libcxx/include/__iterator/back_insert_iterator.h
@@ -55,6 +55,8 @@
_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_AFTER_CXX17 back_insert_iterator& operator*() {return *this;}
_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_AFTER_CXX17 back_insert_iterator& operator++() {return *this;}
_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_AFTER_CXX17 back_insert_iterator operator++(int) {return *this;}
+
+ _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_AFTER_CXX17 _Container* __get_container() const { return container; }
};
template <class _Container>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D110573.421320.patch
Type: text/x-patch
Size: 2100 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/libcxx-commits/attachments/20220407/ac8a8f38/attachment-0001.bin>
More information about the libcxx-commits
mailing list