Pertanyaan yang diberi tag «perfect-forwarding»


6
Apa tujuan utama penggunaan std :: forward dan masalah apa yang dipecahkannya?
Dalam penerusan yang sempurna, std::forwarddigunakan untuk mengkonversi referensi nilai yang dinamai t1dan referensi nilai yang t2tidak disebutkan namanya. Apa tujuan melakukan itu? Bagaimana hal itu memengaruhi fungsi yang dipanggil innerjika kita meninggalkan t1& t2sebagai lvalues? template <typename T1, typename T2> void outer(T1&& t1, T2&& t2) { inner(std::forward<T1>(t1), std::forward<T2>(t2)); }

6
make_unique dan penerusan sempurna
Mengapa tidak ada std::make_uniquetemplat fungsi di pustaka C ++ 11 standar? saya menemukan std::unique_ptr<SomeUserDefinedType> p(new SomeUserDefinedType(1, 2, 3)); sedikit bertele-tele. Bukankah yang berikut ini akan jauh lebih baik? auto p = std::make_unique<SomeUserDefinedType>(1, 2, 3); Ini menyembunyikan yang newbaik dan hanya menyebutkan tipe sekali. Bagaimanapun, ini adalah upaya saya untuk implementasi …


1
Bagaimana seseorang memanggil std :: forward pada semua argumen dalam fungsi variadic?
Saya baru saja menulis pabrik objek generik dan menggunakan pustaka meta preprocessor boost untuk membuat template variadic (menggunakan 2010 dan tidak mendukungnya). Fungsi saya menggunakan referensi rval dan std::forwardmelakukan penerusan sempurna dan itu membuat saya berpikir ... ketika C ++ 0X keluar dan saya memiliki kompiler standar, saya akan melakukan …

1
Bisakah saya daftar-menginisialisasi std :: vektor dengan penerusan yang sempurna dari elemen?
Saya perhatikan bahwa daftar agregasi inisialisasi std :: vector melakukan inisialisasi salin ketika bergerak lebih berlaku. Pada saat yang sama, banyak emplace_backs melakukan apa yang saya inginkan. Saya hanya bisa menghasilkan solusi yang tidak sempurna untuk menulis fungsi templat ini init_emplace_vector. Ini hanya optimal untuk konstruktor nilai tunggal yang tidak …
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.