我正在尝试与删除器一起使用std::unique_ptr
。这是我的代码:
template<class T>
struct Deleter
{
void operator()(T* p)
{
delete[] p;
}
};
void Test()
{
vector<unique_ptr<char>> v;
for(size_t i = 0; i < 5; ++i)
{
char* p = new char[10];
sprintf(p, "string %d", i);
v.push_back( unique_ptr<char, Deleter<char>>(p) ); // error is here
}
}
错误 C2664: 'void std::vector<_Ty>::push_back(std::unique_ptr &&)' : 无法将参数 1 从 'std::unique_ptr<_Ty,_Dx>' 转换为 'std::unique_ptr<_Ty> && '
编译器:VC++ 2012。我该如何解决这个问题?我的目标是unique_ptr
与调用delete[]
而不是 default的自定义删除器一起使用delete
。