Método C ++ get - retornando por valor ou por referência

Fiz uma pergunta muito simples, mas infelizmente não consigo descobrir a resposta.

Suponha que eu tenho uma estrutura de dados que contém configurações e age como um mapa de configurações. eu tenho umGetValue(const std::string& name) método, que retorna o valor correspondente.

Agora estou tentando descobrir - que tipo de abordagem de valor-retorno seria melhor. O óbvio significa fazer meu método agir como

std::string GetValue(const std::string& name) const

e retorne uma cópia do objeto e confie no RVO nos significados de desempenho.

O outro significaria fazer dois métodos

std::string& GetValue(...)
const std::string& GetValue(...) const

o que geralmente significa duplicar o código ou usar algumas constantes maléficas para usar uma dessas rotinas duas vezes.

#Q

Qual seria sua escolha nesse tipo de situação e por quê?

questionAnswers(4)

yourAnswerToTheQuestion