为什么std :: move有时会在没有命名空间前缀的情况下工作" std ::"

时间:2015-09-04 09:09:34

标签: c++ c++11 std

在以下代码中,"移动(A)"没有工作,需要" std :: move(A)", 但" std :: move(std :: unique_ptr)"的代码作品

为什么?

#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"
}

0 个答案:

没有答案