vector <unique_ptr>给出麻烦</unique_ptr>

时间:2014-04-09 01:42:26

标签: c++ c++11 unique-ptr

我的短代码如下

#include <memory>
#include <vector>
#include <tuple>
using namespace std;

struct A
{
    A() {}
    vector<unique_ptr<int>> m; 
    // Change the above line to "unique_ptr<int> m;" removes the compilation error
    // Or add a line "A(A const&) = delete;" removes the compilation error also
};

struct B
{
    tuple<A> t;
};

int main()
{
    A a;
    B b;
    return 0;
}

VC2013 NOV CTP编译器出错:

错误1错误C2280:&#39; std :: unique_ptr&gt; :: unique_ptr(const std :: unique_ptr&lt; _Ty,std :: default_delete&lt; _Ty&gt;&gt;&amp;)&#39; :尝试引用已删除的函数xmemory0 593

这是编译错误还是代码错误?

1 个答案:

答案 0 :(得分:1)

这是Visual Studio中的错误;根据@ Gonmator的评论,它已经在VS2013 Update 1中得到修复。

它可能类似于报告的错误,例如
https://connect.microsoft.com/VisualStudio/feedback/details/801826/std-tuple-with-rvalue-references-not-working-if-clr-enabled

https://connect.microsoft.com/VisualStudio/feedback/details/891428/c-std-pair-has-no-default-move-constructor
- 显然MSVC有几个涉及“移动语义+ std :: tuple”的残留错误。