簡體   English   中英

std :: vector <std::unique_ptr<int> &gt;不編譯

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM