构造一对 unique_ptr<int> 和 int
Construct pair of unique_ptr<int> and int
我正在尝试创建一对 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 studio17\community\vc\tools\msvc.15.26726\include\utility 405
我不明白为什么会这样。我在 MSVC 上。
您不能复制唯一指针。毕竟,副本不会是唯一的。改为移动:
auto pr = std::make_pair(
0, std::make_unique<int>(0)
);
如果需要,您也可以从左值移动,方法是使用 std::move
:
将左值转换为右值
auto pr = std::make_pair(
0, std::move(p)
);
我正在尝试创建一对 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 studio17\community\vc\tools\msvc.15.26726\include\utility 405
我不明白为什么会这样。我在 MSVC 上。
您不能复制唯一指针。毕竟,副本不会是唯一的。改为移动:
auto pr = std::make_pair(
0, std::make_unique<int>(0)
);
如果需要,您也可以从左值移动,方法是使用 std::move
:
auto pr = std::make_pair(
0, std::move(p)
);