std :: move需要返回std :: unique

我有一个函数返回一个unique_ptr,如下所示:

std::unique_ptr<MyClass> createMyClass( ... )
{
    std::unique_ptr<MyClass> my_unique_ptr;
    // Some code that populates my_unique_ptr
    return my_unique_ptr;
}

此函数使用最新版本的GCC和Clang与-std = c ++ 14编译,但是Intel编译器(icpc 15.0.3 20150408)抱怨default_delete无法访问(“错误#373”)。 如果我用返回语句替换

    return std::move(my_unique_ptr);

那么英特尔编译器就能够编译代码。 我的印象是复制elision适用于函数返回,所以std :: move是多余的。 为什么英特尔想要一个明确的std :: move?

我使用的是OS X Mavericks,因此如果有问题,英特尔正在与libc ++进行链接。

链接地址: http://www.djcxy.com/p/59681.html

上一篇: std::move required on return of std::unique

下一篇: ptr<T>>