Hello!
Thank you, as always, for the great work that you do on libstdc++. The
inout_ptr implementation properly handles the issue raised in LWG 3897
but it seems like having an explicit test might be a good idea.
I hope that this helps!
Will
-- >8 --
Add a test to verify that the implementation of inout_ptr is not
vulnerable to LWG Issue 3897.
libstdc++-v3/ChangeLog:
* testsuite/20_util/smartptr.adapt/inout_ptr/3.cc: New test
for LWG Issue 3897.
Signed-off-by: Will Hawkins <[email protected]>
---
.../20_util/smartptr.adapt/inout_ptr/3.cc | 17 +++++++++++++++++
1 file changed, 17 insertions(+)
create mode 100644 libstdc++-v3/testsuite/20_util/smartptr.adapt/inout_ptr/3.cc
diff --git a/libstdc++-v3/testsuite/20_util/smartptr.adapt/inout_ptr/3.cc
b/libstdc++-v3/testsuite/20_util/smartptr.adapt/inout_ptr/3.cc
new file mode 100644
index 00000000000..f9114dc57b5
--- /dev/null
+++ b/libstdc++-v3/testsuite/20_util/smartptr.adapt/inout_ptr/3.cc
@@ -0,0 +1,17 @@
+// { dg-do run { target c++23 } }
+
+#include <memory>
+#include <testsuite_hooks.h>
+
+// C++23 [inout.ptr.t] Class template inout_ptr_t
+// Verify that implementation handles LWG Issue 3897
+void nuller(int **p) {
+ *p = nullptr;
+}
+
+int main(int, char **) {
+ int *i = new int{5};
+ nuller(std::inout_ptr(i));
+
+ VERIFY(i == nullptr);
+}
--
2.41.0