Neden değil't orada bir std::shared_ptr<T []&; gt uzmanlık?
Standart doğru kendi yıkıcı: delete[]
aramalar std::unique_ptr
bir şablonu uzmanlaşma sağlar
void func()
{
std::unique_ptr< int[] > arr(new int[10]);
.......
}
std::shared_ptr
ile bu uzmanlık için gerekli bu yüzden kullanılamıyor
doğru delete[]
çağıran bir deleter sağlamak için:
void func()
{
// Usage
shared_ptr array (new double [256], [](double* arr) { delete [] arr; } );
..............
}
Bu sadece bir gözetim olduğunu? ya da bunun bir sebebi var mı (std::copy_if
var aynı şekilde)?
CEVAP
Bu LWG (C Komitesi Kütüphane Çalışma Grubu) kısaca olasılığı olarak kabul ama fikri tartışmalara olmadan değildi. Tartışma ağırlıklı bir özelliği fırlattı olabilirdi shared_ptr<T[]>
teklife eklenen (shared_ptr<T[]>
aritmetik) hakkında olmasına rağmen.
Ama sonuçta gerçek gerçek nedeni tartışıldı ama hiç bu LWG önünde gerçek yazılı bir önerisi vardı. Hiç kimsenin öncelik listesi (kendi de dahil olmak üzere) yeterli bir teklif yazma içine zaman koymak için kabarmış.
Gayri resmi konuşmaları son birkaç LWG üyeleri arasında yeniden bu konu üzerinde başladı ve şahsen prototyped var. Ama yine de bunun için yazılı bir teklif yok. Araç düzgün ek bir araç olacağını düşünüyorum. Şimdiye kadar gerçek olacak ya da olup olmadığını tahmin.
Güncelleme
shared_ptr
dizi destek şimdi bir taslak TS
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4077.html
Orada std olmayan bir atom eşdeğerdir:...
Sorun neden orada çalışıyor, ping deği...
Neden değil't orada birçok tartış...
Neden unique_ptr bir tür parametresi s...
Neden't GCC*****a (**)*(**) optim...