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>>