SORU
12 AĞUSTOS 2011, Cuma


make_unique ve mükemmel iletme

Neden C 11 standart kütüphane std::make_unique İşlev şablonu var mı? Buluyorum

std::unique_ptr<SomeUserDefinedType> p(new SomeUserDefinedType(1, 2, 3));

biraz ayrıntılı. Aşağıdaki daha hoş olmaz mıydı?

auto p = std::make_unique<SomeUserDefinedType>(1, 2, 3);

Bu kez new güzel gizler ve tek tip bahseder.

Her neyse, burada make_unique uygulaması yük:

template<typename T, typename... Args>
std::unique_ptr<T> make_unique(Args&&... args)
{
    return std::unique_ptr<T>(new T(std::forward<Args>(args)...));
}

Beni uzunca bir süre std::forward derlemek için bir şeyler almak için zaman aldı, ama doğru olup olmadığından emin değilim. ? Tam olarak std::forward<Args>(args)... ne anlama geliyor? Derleyici bu konuda ne düşünüyor?

CEVAP
11 Mart 2012, Pazar


Herb Sutter, C standardizasyon Komitesi Başkanı, onun blog yazar:

C 11 make_unique içermeyen kısmen bir gözetim ve kesinlikle gelecekte eklenecektir.

O da bir OP tarafından verilen ile aynı olan bir uygulama sağlar.

Düzenleme:std::make_unique C 14 parçası olacak.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • expertvillage

    expertvillag

    5 NİSAN 2006
  • John Lynn

    John Lynn

    8 Ocak 2010
  • SuicideSheeep

    SuicideSheee

    8 Ocak 2012