При использовании ссылок на пересылку это плохая идея переслать такое же значение для более чем одной функции? Рассмотрим следующий фрагмент кода:
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
является ссылкой lvalue, функция работает просто отлично. Тем не менее, я беспокоюсь о ситуациях, когда rvalues передаются ему, потому что значение становится недействительным, как только происходит операция перемещения. Мое сомнение заключается в следующем: есть ли правильный способ пересылки контейнера в этом случае без потери категории значений?