我的短代码如下
#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
这是编译错误还是代码错误?
答案 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”的残留错误。