Domande taggate «rvalue-reference»


6
Quali sono gli scopi principali dell'uso di std :: forward e quali problemi risolve?
In perfetto inoltro, std::forwardviene utilizzato per convertire i riferimenti rvalue nominati t1e t2in riferimenti rvalue senza nome. Qual è lo scopo di farlo? In che modo ciò influirebbe sulla funzione chiamata innerse lasciamo t1e t2come valori? template <typename T1, typename T2> void outer(T1&& t1, T2&& t2) { inner(std::forward<T1>(t1), std::forward<T2>(t2)); }

6
Valori C ++ 11 e spostamento della confusione semantica (istruzione return)
Sto cercando di capire i riferimenti ai valori e spostare la semantica di C ++ 11. Qual è la differenza tra questi esempi e quale di essi non eseguirà alcuna copia vettoriale? Primo esempio std::vector<int> return_vector(void) { std::vector<int> tmp {1,2,3,4,5}; return tmp; } std::vector<int> &&rval_ref = return_vector(); Secondo esempio std::vector<int>&& …

6
Sposta la cattura in lambda
Come acquisisco per spostamento (noto anche come riferimento rvalue) in un lambda C ++ 11? Sto cercando di scrivere qualcosa del genere: std::unique_ptr<int> myPointer(new int); std::function<void(void)> example = [std::move(myPointer)]{ *myPointer = 4; };






3
I valori di chiusura lambda possono essere passati come parametri di riferimento del valore
Ho scoperto che lvaluele chiusure lambda possono sempre essere passate come rvalueparametri di funzione. Vedi la seguente semplice dimostrazione. #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
Perché una variabile enum è un valore qui?
Esempio: typedef enum Color { RED, GREEN, BLUE } Color; void func(unsigned int& num) { num++; } int main() { Color clr = RED; func(clr); return 0; } Ottengo il seguente errore quando compilo questo: <source>: In function 'int main()': <source>:16:9: error: cannot bind non-const lvalue reference of type 'unsigned …
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.