构造一对unique_ptr 和int

问题描述 投票:0回答:1

我正在尝试创建一对int和unique_ptr。我应该如何使用make_pair来创建它?

#include <string>
#include <memory>
#include <algorithm>

int main()
{
    std::unique_ptr<int> p = std::make_unique<int>(0);
    std::pair<int, std::unique_ptr<int>> pr = std::make_pair((int)0, p);
}

我遇到了以下问题,

Error   C2440   '<function-style-cast>': cannot convert from 'initializer list' to '_Mypair'    templpairuniqueptr  c:\program files (x86)\microsoft visual studio\2017\community\vc\tools\msvc\14.15.26726\include\utility 405 

我不明白为什么会这样。我在MSVC上。

c++ compiler-errors stl std-pair
1个回答
3
投票

您无法复制唯一指针。毕竟,副本不会是唯一的。改为:

auto pr = std::make_pair(
    0, std::make_unique<int>(0)
);

如果需要,您也可以通过使用std::move将左值转换为右值来从左值移动:

auto pr = std::make_pair(
    0, std::move(p)
);
© www.soinside.com 2019 - 2024. All rights reserved.