De même que pour How do I remove code duplication between similar const and non-const member functions?, je souhaite supprimer la duplication de code entre des fonctions membres presque identiques, à l'exception des qualificatifs ref.Comment puis-je supprimer la duplication de code entre des fonctions membres qualifiées de ref similaires?
Disons que j'ai une classe qui est quelque chose comme ceci:
class MyStringBuilder
{
std::string member;
public:
// Other functions
std::string create() const& {
// Some work
std::string result = member;
// More work
return result;
}
std::string create() && {
// Some work
std::string result = std::move(member);
// More work
return result;
}
};
Il est pas inconcevable que nous voudrions le faire pour un objet constructeur, car il enregistre une copie si nous avons fini avec la MyStringBuilder
. A l'exception des cas où les membres sont utilisés, le code entre la version const&
et la version &&
est identique. La seule différence entre les deux fonctions est que les &&
version std::move
sont des membres chaque fois qu'ils sont référencés.
Comment puis-je éviter cette duplication de code?