3

In the following code, "move(A)" doesn't work, and requires "std::move(A)", But the code for "std::move(std::unique_ptr)" works

Why is that?

#include <memory>

class A
{
public:
    A() = delete;
    A(int i){}
    A(A&& rhs) {}
};

int main()
{
    std::unique_ptr<A> ux = std::make_unique<A>(1);
    std::unique_ptr<A> uy(move(ux)); // This compiles without "std::move"
    A x = A(1);
    A y(move(x)); // This won't compile. Requires "std::move"
}
user972014
  • 3,296
  • 6
  • 49
  • 89

0 Answers0