значения не поменяется?
std::forward< decltype(expr) >(expr)
Т.е. это то же самое, что просто написать expr.
Перебрал все варианты, вроде так и есть.
Какой тогда смысл имеет этот пример на cppreference?
https://godbolt.org/z/49KrT9fsq
Зачем нужно форвардить arg для вызова get - понятно. Но зачем потом еще и возвращаемое значение форвардить - непонятно.
Если убрать внешний форвард, то ничего не меняется. Или это просто пример из пальца для того, чобы показать, что forward может принимать rvalue, но тогда и форвардить он это будет как rvalue.
https://en.cppreference.com/w/cpp/utility/forward
В этом случае не поменяется, странный пример форварда
А нет. int val1{}; std::forward<decltype(val1)>(val1); //makes rvalue
Подумайте об этом примере: int&& i = 42; static_assert(std::is_same_v<decltype((i)), int&>);
Это другой пример Сам пишешь, что > зачем форвардить arg для вызова get - понятно
Обсуждают сегодня