Hãy nói rằng tôi muốn sử dụng một deleter tuỳ chỉnh với một unique_ptr:Tại sao unique_ptr không thể suy ra loại deleter?
void custom_deleter(int* obj)
{
delete obj;
}
Tại sao tôi phải viết này:
std::unique_ptr<int, void(*)(int*)> x(new int, custom_deleter);
thay vì điều này:
std::unique_ptr<int> x(new int, custom_deleter); //does not compile
?
Không thể suy ra loại suy luận?
Related: http://stackoverflow.com/questions/21355037/why-does-unique-ptr-take-two-template-parameters-when-shared-ptr-only-takes-one – 0x499602D2
Lớp mẫu không suy ra các tham số mẫu. Chỉ các hàm mẫu mới có. –
Tôi tự hỏi tại sao 'std :: make_unique' không có quá tải trong đó bạn có thể chỉ định deleter. Bằng cách này, bạn có thể suy ra loại của deleter. – vsoftco