転送参照を使用する場合、同じ値を複数の関数に転送するのは悪い考えですか? 次のコードを検討してください。
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));
}
が左辺値参照の場合Container
、関数は正常に機能します。ただし、移動が発生すると値が無効になるため、右辺値が渡される状況が心配です。私の疑問は次のとおりです。その場合、値カテゴリを失うことなくコンテナを転送する正しい方法はありますか?