使用转发引用时,将相同的值转发给多个函数是不是一个坏主意?考虑以下代码:
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
是左值引用,则该函数可以正常工作。但是,我担心将右值传递给它的情况,因为一旦发生移动,该值就会失效。我的疑问是:在这种情况下是否有正确的方法来转发容器,而不会丢失值类别?