При реализации С++ 17 std::any
в соответствии с имеющейся спецификацией в этой вики я наткнулся на то, что казалось мне бессмысленным:
В определении свободной функции std::any_cast
, которая используется для извлечения значений из экземпляра std::any
, перегрузка для r-value (это третий):
template< class ValueType >
ValueType any_cast(any&& operand); // (3)
Теперь есть перечисленное ниже требование, которое относится к перегрузкам 2 и 3 (это означает также включение перегрузки r-значения):
2-3)
Возвращает*any_cast<std::remove_reference_t<ValueType>>(&operand)
Определение , по-видимому, не позволяет перемещать данные!
Вызов функции просто перенаправлен на перегрузку на основе указателя; информация о временном характере operand
теряется!
Предполагается ли, что я не могу уйти из какого-либо экземпляра? Это просто ошибка в wiki? Я здесь не прав?