【问题标题】:Alternate to Initializing a vector of unique pointers [duplicate]替代初始化唯一指针向量[重复]
【发布时间】:2017-07-26 15:15:15
【问题描述】:

我需要一种方法来获取从函数返回的“std::unique_ptr”,并在初始化列表中使用它来初始化它们中的std::vector。我愿意接受任何涉及使用逗号分隔列表初始化std::vector 的解决方案(即返回向量的可变参数函数),但此过程需要使用移动语义来获取返回的“std::unique_ptr”数据。我遇到的问题可以在下面的代码中看到:

#include <vector>
#include <memory>

std::unique_ptr<int> create(int value) {
    return std::make_unique<int>(value);
}

int main() {
    std::vector<std::unique_ptr<int>> myVec = { create(1), create(2), create(3) }; //this results in an error
    return 0;
}

错误信息:C2280 'std::unique_ptr>::unique_ptr(const std::unique_ptr<_ty>> &)': 试图引用已删除的函数 c:\program files (x86 )\microsoft visual studio 14.0\vc\include\xmemory0 737

我正在使用 microsoft visual studios 2015 编译程序。

编辑:正如我之前所说,我需要一些解决方案,只涉及一个逗号分隔的唯一指针列表,我似乎无法弄清楚如何使用可变参数来告诉我像 std::initializer_list 这样的参数 # 可以做.我可以使用一些模板或宏 hack 来实现这一点吗?

【问题讨论】:

标签: c++ stdvector unique-ptr initializer-list


【解决方案1】:

您不能将元素移出std::initializer_list

【讨论】:

  • 这太可怕了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-12-03
  • 1970-01-01
  • 2019-07-25
  • 2016-03-26
  • 2012-06-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多