【发布时间】:2018-06-28 18:13:37
【问题描述】:
我使用带有自定义删除器的std::unique_ptr 作为std::map 的值,如下所示:
#include <iostream>
#include <memory>
#include <map>
void deleter(int* p){
std::cout<<"Deleting..."<<std::endl;
delete p;
}
int main()
{
std::map<char, std::unique_ptr<int, void(*)(int*)>> a;
std::unique_ptr<int, void(*)(int*)> p{new int{3}, deleter};
a['k'] = std::move(p);
}
插入值时,我使用std::move,但是编译不出来。
我做错了什么?
您会看到以下链接的错误。
【问题讨论】:
-
把最后一行改成
a.emplace('k', std::move(p));
标签: c++ unique-ptr stdmap stdmove