Почему C ++ 23 23 enumerate_view (в отличие от тезки Range-V3) не может быть заведен в TO_VECTOR?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Почему C ++ 23 23 enumerate_view (в отличие от тезки Range-V3) не может быть заведен в TO_VECTOR?

Сообщение Anonymous »

Вот минимальный пример: < /p>

Код: Выделить всё

#include 
#include 
#include 
#include 

int main()
{
std::vector const vec;

vec
| std::views::enumerate
| ranges::to_vector;       // error

vec
| ranges::views::enumerate
| ranges::to_vector;       // ok

}
< /code>
, которая дает эту ошибку: < /p>
: In function 'int main()':
:12:5: error: no match for 'operator|' (operand types are 'std::ranges::enumerate_view' and 'ranges::detail::to_container_fn' {aka 'const ranges::detail::to_container::closure'})
10 |     vec
|     ~~~
11 |     | std::views::enumerate
|     ~~~~~~~~~~~~~~~~~~~~~~~
|     |
|     std::ranges::enumerate_view
12 |     | ranges::to_vector;       // error
|     ^ ~~~~~~~~~~~~~~~~~
|               |
|               ranges::detail::to_container_fn {aka const ranges::detail::to_container::closure}
с последующим списком кандидатов, которые были рассмотрены. int, const int &> &&, std :: tuple &> Имеет член :: type , которого нет. Теперь длинный int -это просто индекс, прикрепленный перечислившим , тогда как вторая запись кортежа соответствует записи в v , и что & in const int & , скорее всего Неправильно. < /p>

Может быть, связанный: range-v3: Почему здесь необходимо диапазоны :: to_vector? < /p>

Подробнее здесь: https://stackoverflow.com/questions/797 ... -into-rang
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»