Consider the minimal example below:
#include<utility>
struct S { };
int main() {
S s;
std::move(s) = S{};
}
It compiles with no errors.
If I use non class types instead, I get an error.
As an example, the code below doesn't compile:
#include<utility>
int main() {
int i;
std::move(i) = 42;
}
The same happens with enums, scoped enums, and so on.
The error (from GCC) is:
using xvalue (rvalue reference) as lvalue
What's the rationale behind this?
I guess it's right, but I'd like to understand what's the reason for which I can do that with all the types but the non class ones.
Aucun commentaire:
Enregistrer un commentaire