S: Mengapakah fungsi make_unique terpusat hilang dalam perpustakaan standard C 11?
Ramai yang mendapati boilerplate pembinaan untuk petunjuk unik menyusahkan. Contohnya:
std::unique_ptr<SomeUserDefinedType> p(new SomeUserDefinedType(1, 2, 3));
Fungsi anggun seperti ini akan diutamakan:
auto p = std::make_unique<SomeUserDefinedType>(1, 2, 3);
S: Berikut ialah percubaan pelaksanaan make_unique, tetapi sesuatu tentang std::forward kelihatan rosak. Apakah yang dilakukannya dan bagaimanakah ia sepatutnya digunakan?
template<typename T, typename... Args> std::unique_ptr<T> make_unique(Args&&... args) { return std::unique_ptr<T>(new T(std::forward<Args>(args)...)); }
J: Peninggalan std::make_unique dalam C 11 telah diakui sebagai kesilapan: ia telah ditambahkan dalam C 14.
Ungkapan std::forward
Atas ialah kandungan terperinci Mengapakah `std::make_unique` Tiada dalam C 11, dan Bagaimanakah Pemajuan Sempurna Berfungsi dalam Pelaksanaannya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!