私はstd::unique_ptr
deleterで使用しようとしています。これは私のコードです:
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。これを修正するにはどうすればよいですか? 私の目標は、 default の代わりにunique_ptr
呼び出すカスタム deleter を使用することです。delete[]
delete