Por que std::move é chamado de std::move?
A função std::move, apesar do nome, não realmente mover qualquer coisa. Ele apenas converte um lvalue (uma expressão referente a um objeto) em um rvalue (uma expressão que representa um objeto temporário). Essa conversão é realizada por meio de uma conversão para a categoria xvalue, que é distinta de lvalues e prvalues.
O motivo dessa escolha de nomenclatura remonta à história do conceito. Originalmente, a operação de movimentação foi introduzida como uma forma de trocar valores de forma eficiente, sem copiá-los. A sintaxe inicial para isso envolvia converter lvalues em rvalues usando static_cast. Para melhorar a legibilidade e transmitir a intenção dessas conversões, a palavra-chave move foi introduzida como açúcar sintático para static_cast.
No contexto da época, usar o termo "move" pretendia indicar o propósito dessas conversões : para ativar a semântica de movimentação. A consequência é que o código transmite não a ação técnica precisa (transmitir para um rvalue), mas sim o resultado desejado (mover o objeto).
Ao longo dos anos, o conceito de lvalues e rvalues evoluiu para o categorias de valor que temos hoje, com xvalues representando objetos que foram convertidos em rvalues. Como resultado, a palavra-chave move pode ser vista como enganosa, pois implica apenas uma ação que pode ou não ocorrer nos bastidores.
No entanto, a opção de usar a palavra-chave move foi mantida para preservar a legibilidade. e evite a confusão que pode surgir de uma sintaxe desconhecida como cast_to_xvalue. A função std::move continua sendo um utilitário valioso que permite aos programadores expressar a semântica de movimento de forma concisa, mesmo que seu nome não capture perfeitamente os detalhes técnicos de sua operação.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3