Rvalue et move (encore et toujours)
Ecnore une question autour des concept des Rvalue references et du move semantics :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
|
struct Foo
{
int n;
explicit Foo(int m):n(m)
{
std::cout << "constructeur\n";
}
Foo(const Foo& n)
{
std::cout << "constructeur copie\n";
}
Foo(Foo&& n)
{
std::cout << "constructeur move\n";
}
};
Foo make()
{
return Foo(3);
}
int main()
{
Foo po( make() ); //ok mais affiche uniquement constructeur ?!
std::cout << " " << po.n;
system("pause");
}
int main()
{
Foo po( move(make()) ); //passe bien dans le move ctor
std::cout << " " << po.n; // affiche n'importe quoi?!
system("pause");
} |
Deux questions :
pourquoi dans le premier main , on ne passe ni dans le ctor de copie ni dans le ctor de move ?
pourquoi dans le 2eme cas, ça affiche n'importe quoi ?
Merci.