Почему 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

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