SORU
20 Ocak 2012, Cuma


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
20 Ocak 2012, Cuma


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

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Shameless Maya

    Shameless Ma

    24 Mayıs 2012
  • Snazzy Labs

    Snazzy Labs

    9 Aralık 2008
  • Thom Hall

    Thom Hall

    24 Kasım 2006