Lorsque vous utilisez des références de transfert, est-ce une mauvaise idée de transférer la même valeur à plusieurs fonctions à ? Considérez le morceau de code suivant:Renvoyer la même valeur à deux fonctions ou plus
template<typename Container>
constexpr auto
front(Container&& c)
-> typename Container::value_type
{ return std::forward<Container>(c).front(); }
template<typename Container>
constexpr auto
back(Container&& c)
-> typename Container::value_type
{ return std::forward<Container>(c).back(); }
template<typename Container>
constexpr auto
get_corner(Container&& c)
{
return do_something(front(std::forward<Container(c)),
back(std::forward<Container>(c));
}
Si Container
est une lvalue référence, la fonction fonctionne très bien. Cependant, je m'inquiète des situations où les valeurs lui sont transmises, car la valeur serait invalidée une fois qu'une opération de déplacement a eu lieu. Mon doute est: Y a-t-il un moyen correct d'expédier le conteneur dans ce cas, sans perdre la catégorie de valeur?
"est-ce une mauvaise idée de transmettre la même valeur à plus d'une fonction? Considérons le morceau de code suivant: "En général, oui. Dans certains cas d'utilisation, c'est inoffensif. Cela ne peut que vous blesser, vraiment. Dans votre cas d'utilisation spécifique, pourquoi transmettre du tout? – AndyG
@AndyG, déplacer la sémantique. –