Avatar ·

É hora de abandonar a passagem de const std::string& em parâmetros de funções?

Olá a todos! Sou novo em C++ e vejo constantemente em livros e artigos antigos o conselho de passar strings em funções como const std::string&. Mas recentemente me deparei com uma discussão onde diziam que no C++11 e posteriores isso já não é uma boa prática. Dizem que, por causa da move semantics, é mais eficiente passar strings por valor do que por referência constante. Estou completamente confuso. Aqui está um exemplo do meu código: ```cpp void processData(const std::string& name) { // ... algum trabalho com name, mas sem cópia std::cout << name << std::endl; } void storeData(const std::string& name) { // Aqui quero salvar name em um membro da classe m_name = name; // isso é uma cópia? } ``` O primeiro caso é apenas leitura da string. O segundo é salvar em um campo do objeto. const std::string& está realmente obsoleto? Quando devo usá-lo, e quando é melhor passar a string por valor (std::string)? Ou talvez deva usar std::string_view? Peço encarecidamente que expliquem de forma simples, com exemplos, qual opção é mais ideal em