]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
libstdc++: add missing return in generator assignment operator [PR118196]
authorArsen Arsenović <arsen@aarsen.me>
Tue, 24 Dec 2024 11:50:28 +0000 (12:50 +0100)
committerArsen Arsenović <arsen@gcc.gnu.org>
Fri, 27 Dec 2024 11:29:42 +0000 (12:29 +0100)
libstdc++-v3/ChangeLog:

PR libstdc++/118196
* include/std/generator (generator::operator=(generator)): Add
missing 'return *this;'.
* testsuite/24_iterators/range_generators/pr118196.cc: New test.

libstdc++-v3/include/std/generator
libstdc++-v3/testsuite/24_iterators/range_generators/pr118196.cc [new file with mode: 0644]

index 3a19d535ef866809da5538116de42da97cc0f744..7d7e9b70865740348a27f296bbb7e34fc2789a79 100644 (file)
@@ -717,6 +717,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       {
        swap(__other._M_coro, this->_M_coro);
        swap(__other._M_began, this->_M_began);
+       return *this;
       }
 
       _Iterator
diff --git a/libstdc++-v3/testsuite/24_iterators/range_generators/pr118196.cc b/libstdc++-v3/testsuite/24_iterators/range_generators/pr118196.cc
new file mode 100644 (file)
index 0000000..ae161df
--- /dev/null
@@ -0,0 +1,13 @@
+// { dg-do compile { target c++23 } }
+#include "<generator>"
+
+std::generator<int>
+generator();
+
+void
+try_reassigning()
+{
+  auto gen = generator();
+  auto gen2 = generator();
+  gen = std::move(gen2);
+}