Pertanyaan yang diberi tag «rvalue-reference»


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
Nilai C ++ 11 dan memindahkan kebingungan semantik (pernyataan pengembalian)
Saya mencoba memahami referensi nilai dan memindahkan semantik C ++ 11. Apa perbedaan antara contoh-contoh ini, dan mana di antara mereka yang tidak memiliki salinan vektor? Contoh pertama std::vector<int> return_vector(void) { std::vector<int> tmp {1,2,3,4,5}; return tmp; } std::vector<int> &&rval_ref = return_vector(); Contoh kedua std::vector<int>&& return_vector(void) { std::vector<int> tmp {1,2,3,4,5}; return …

6
Pindahkan tangkapan di lambda
Bagaimana cara saya menangkap dengan memindahkan (juga dikenal sebagai referensi nilai) dalam lambda C ++ 11? Saya mencoba menulis sesuatu seperti ini: std::unique_ptr<int> myPointer(new int); std::function<void(void)> example = [std::move(myPointer)]{ *myPointer = 4; };



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 …


3
Nilai penutupan Lambda dapat dilewatkan sebagai parameter referensi nilai ulang
Saya menemukan bahwa lvaluepenutupan lambda selalu dapat dilewati sebagai rvalueparameter fungsi. Lihat demonstrasi sederhana berikut. #include <iostream> #include <functional> using namespace std; void foo(std::function<void()>&& t) { } int main() { // Case 1: passing a `lvalue` closure auto fn1 = []{}; foo(fn1); // works // Case 2: passing a `lvalue` …

2
Mengapa variabel enum merupakan nilai di sini?
Contoh: typedef enum Color { RED, GREEN, BLUE } Color; void func(unsigned int& num) { num++; } int main() { Color clr = RED; func(clr); return 0; } Saya mendapatkan kesalahan berikut ketika saya kompilasi ini: <source>: In function 'int main()': <source>:16:9: error: cannot bind non-const lvalue reference of type …
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.