unique_ptr, nécessite un move au return ?
Bonjour,
J'ai actuellement une fonction qui, une fois simplifiée, ressemble à ça :
Code:
1 2 3 4 5 6 7 8 9 10
| #include <memory>
struct Base {};
struct Derived : Base {};
std::unique_ptr<Base> foo() {
std::unique_ptr<Derived> ptr;
return std::move(ptr);
} |
Ma question est : pourquoi le move est-il nécessaire ?
Pourquoi le code-suivant ne fonctionne-t-il pas ?
Code:
1 2 3 4 5 6 7 8 9 10
| #include <memory>
struct Base {};
struct Derived : Base {};
std::unique_ptr<Base> foo() {
std::unique_ptr<Derived> ptr;
return ptr;
} |
En effet, il me semblait que le move était implicite au moment d'un return.
Où me trompe-je ?
Je vous remercie d'avance,
Equinoxe