![](/img/trans.png)
[英]std::vector<std::unique_ptr<UnimplementType>> compile error
[英]std::vector<std::unique_ptr<int> > does not compile
當我聲明一個unique_ptr的向量時,會出現這種錯誤:
d:\qt\mingw64\include\c++\4.8.0\bits\stl_construct.h:75: error:
use of deleted function 'std::unique_ptr<_Tp, _Dp>::unique_ptr(
const std::unique_ptr<_Tp, _Dp>&) [with _Tp = int; _Dp = std::default_delete<int>]'
這似乎是創建沒有復制構造函數的對象容器的經典錯誤。
但是,在我能找到的所有內容中都記錄了該文檔,由於c ++ 11 move語義,一個unique_ptrs的標准容器可以工作。
我正在使用-std = gnu ++ 11使用MinGW-gcc 64位進行編譯。
它僅在c ++ 11中受支持,而在gnu ++ 11中不受支持嗎?
謝謝
以下將使用C ++ 11進行編譯。
#include <iostream>
#include <vector>
#include <memory>
using namespace std;
int main()
{
std::vector<std::unique_ptr<int> > asdf;
return 0;
}
問題不在於std::vector<std::unique_ptr<int> >
本身,而是在可復制類中聲明的這種類型的成員變量。 由於該類的默認副本構造函數調用了std :: vector的副本構造函數,而后者又調用了std :: unique_ptr的默認構造函數,后來被刪除,編譯失敗。
std::vector<std::unique_ptr<int> >
可以作為函數中的局部變量很好地編譯。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.