вместо c[i]? decltype(auto) все равно же вернет либо rvalue, либо lvalue, исходя из того, что будет передано в аргументе, разве нет?
template <typename Containter, typename Index)
decltype(auto) someFunc(Containter&& c, Index i) {
return std::forward<Containter>(c)[i];
}
Нет, оно всегда вернёт lvalue ссылку
Понял, спасибо)
Попробуй передать контейнер без форварда в какую-нибудь функцию из someFunc Сделай перегрузки функции bar для & и && и посмотри что вызовется, когда ты передаешь контейнер из someFunc в bar
Решил сделать. А почему оно именно так работает?
Потому что всё что имеет имя является lvalue expression
Обсуждают сегодня