Perguntas com a marcação «rvalue-reference»


6
Vantagens de usar para a frente
No encaminhamento perfeito, std::forwardé usado para converter as referências rvalue nomeadas t1e t2em referências rvalue não nomeadas. Qual é o propósito de fazer isso? Como isso afetaria a função chamadainner se deixarmos t1& t2como lvalues? template <typename T1, typename T2> void outer(T1&& t1, T2&& t2) { inner(std::forward<T1>(t1), std::forward<T2>(t2)); }

6
C ++ 11 rvalues ​​e mover semântica confusão (declaração de retorno)
Estou tentando entender as referências rvalue e mover a semântica do C ++ 11. Qual é a diferença entre esses exemplos e qual deles não fará cópia vetorial? Primeiro exemplo std::vector<int> return_vector(void) { std::vector<int> tmp {1,2,3,4,5}; return tmp; } std::vector<int> &&rval_ref = return_vector(); Segundo exemplo std::vector<int>&& return_vector(void) { std::vector<int> tmp …

6
Mover captura no lambda
Como capturar por movimentação (também conhecida como referência de rvalue) em um lambda C ++ 11? Eu estou tentando escrever algo como isto: std::unique_ptr<int> myPointer(new int); std::function<void(void)> example = [std::move(myPointer)]{ *myPointer = 4; };






3
Os valores de fechamento lambda podem ser passados ​​como parâmetros de referência rvalue
Descobri que os lvaluefechamentos lambda sempre podem ser passados ​​como rvalueparâmetros de função. Veja a seguinte demonstração simples. #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: …

2
Por que uma variável enum é um rvalue aqui?
Exemplo: typedef enum Color { RED, GREEN, BLUE } Color; void func(unsigned int& num) { num++; } int main() { Color clr = RED; func(clr); return 0; } Eu recebo o seguinte erro ao compilar isso: <source>: In function 'int main()': <source>:16:9: error: cannot bind non-const lvalue reference of type …
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.