I am trying to use std::unique_ptr
with deleter. This is my code:
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
}
}
error C2664: 'void std::vector<_Ty>::push_back(std::unique_ptr &&)' : cannot convert parameter 1 from 'std::unique_ptr<_Ty,_Dx>' to 'std::unique_ptr<_Ty> &&'
Compiler: VC++ 2012. How can I fix this? My goal is to use unique_ptr
with custom deleter which calls delete[]
instead of default delete
.
vector<string>
orvector<array<char>>
? – Luchian Grigore