[Bug libstdc++/93872] New: std::move(first, last, out) doesn't work in -std=c++2a when value type is move-only
ppalka at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Fri Feb 21 17:34:00 GMT 2020
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93872
Bug ID: 93872
Summary: std::move(first, last, out) doesn't work in -std=c++2a
when value type is move-only
Product: gcc
Version: 10.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: libstdc++
Assignee: unassigned at gcc dot gnu.org
Reporter: ppalka at gcc dot gnu.org
Target Milestone: ---
$ cat bug.cc
#include <algorithm>
#include <array>
struct X
{
X() = default;
X(const X&) = delete;
X& operator=(const X&) = delete;
X(X&&) = default;
X& operator=(X&&) = default;
};
bool
test01()
{
std::array<X, 10> a, b;
std::move(a.begin(), a.end(), b.begin());
return true;
}
$ g++ -std=c++17 bug.cc
$ g++ -std=c++2a bug.cc
...
/home/patrick/code/gcc/libstdc++-v3/include/bits/stl_algobase.h:98:10: error:
use of deleted function ‘X& X::operator=(const X&)’
98 | *__dst = std::move(*__src);
| ~~~~~~~^~~~~~~~~~~~~~~~~~~
bug.cc:9:6: note: declared here
9 | X& operator=(const X&) = delete;
| ^~~~~~~~
...
More information about the Gcc-bugs
mailing list