Resultados da pesquisa a pedido "rvalue-reference"

2 a resposta

C ++ 0x: referência rvalue versus lvalue não const

Ao programar em C ++ 03, não podemos passar um temporário sem nomeT() para uma funçãovoid foo(T&);. A solução usual é dar um nome temporário ao e depois passá-lo como: T v; foo(v);Agora, vem C ++ 0x - e agora com referências rvalue, uma ...

5 a resposta

Contêineres de biblioteca padrão que produzem muitas cópias em valores no GCC

Estou escrevendo um aplicativo para Linux e Windows e notei que a versão GCC está produzindo muitas chamadas inúteis para o construtor de cópias. Aqui está um código de exemplo para produzir esse comportamento: struct A { A() { std::cout << ...

5 a resposta

Quando a adição de um construtor de movimento e um operador de atribuição de movimento realmente fará diferença?

Considerando a alta qualidade dos compiladores atuais em relação à otimização do valor de retorno (RVO e NRVO), fiquei pensando em que complexidade de classe é realmente significativo começar a adicionar construtores de movimento e operadores de ...

5 a resposta

Passando rvalues através de std :: bind

Eu quero passar um rvalue porstd::bind para uma função que leva uma referência rvalue em C ++ 0x. Não consigo descobrir como fazê-lo. Por exemplo: #include <utility> #include <functional> template<class Type> void foo(Type &&value) { Type ...

8 a resposta

Regra de três torna-se regra de cinco com C ++ 11?

Então, depois de assistiressa palestra maravilhosa [http://channel9.msdn.com/shows/Going+Deep/C9-Lectures-Introduction-to-STL-with-Stephan-T-Lavavej/] nas referências rvalue, pensei que todas as classes se beneficiariam desse "construtor de ...

4 a resposta

Referência de rvalor do C ++ 11 que chama o construtor de cópia também

Eu tenho testado alguns recursos do C ++ 11 de alguns. Me deparei com referências de valor r e movo construtores. Eu implementei meu primeiro construtor de movimento, aqui está: #include <iostream> #include <vector> using namespace std; class ...

7 a resposta

A construção de passagem por valor e movimentação é um idioma ruim?

Como movemos a semântica em C ++, hoje em dia é comum fazer void set_a(A a) { _a = std::move(a); }O raciocínio é que sea é um rvalue, a cópia será elidida e haverá apenas um movimento. Mas o que acontece sea é um valor l? Parece que haverá uma ...

4 a resposta

Os compiladores C ++ 11 transformam variáveis locais em rvalores quando podem durante a otimização de código?

Às vezes, é aconselhável dividir expressões longas ou complicadas em várias etapas, por exemplo (a segunda versão não é mais clara, mas é apenas um exemplo): return object1(object2(object3(x)));pode ser escrito como: object3 a(x); object2 b(a); ...

3 a resposta

Por que não posso passar uma referência de rvalue como é para outra função no C ++ 11?

Eu tenho um código: void f(int&& i) { auto lambda = [](int&& j) { (void)j; } lambda(i); } int main() { f(5); }Clang ++ dá um erro:no known conversion from 'int' to 'int &&' for 1st argument Porque oi altera seu tipo paraint ao ser passado para ...

3 a resposta

Por que precisamos definir a referência rvalue como null no construtor move?

//code from https://skillsmatter.com/skillscasts/2188-move-semanticsperfect-forwarding-and-rvalue-references class Widget { public: Widget(Widget&& rhs) : pds(rhs.pds) // take source’s value { rhs.pds = nullptr; // why?? } private: struct ...