Не удается назначить преобразование диапазонов в вектор после обновления до VS2019 16.6 - PullRequest
0 голосов
/ 28 мая 2020

Я был на более ранней версии VS2019 (я полагаю, 16.2) и вчера обновился до 16.6, и вдруг рабочий код выдает ошибки компилятора, и я не могу понять, как их исправить.

У меня есть следующий код:

std::vector<ClusterData> run( const std::vector<PointData>& pointsData, uint32_t K, uint32_t max_iterations )
{
    std::vector<Point> points = ranges::view::transform( pointsData, 
           []( const auto& data ) { return Point{ &data }; } );
    ...
}

Это прекрасно работало в 16.2, но теперь выдает следующую ошибку:

no suitable user-defined conversion from 
"ranges::v3::transform_view<ranges::v3::iterator_range<ranges::v3::detail::decay_t<std::_Vector_const_iterator<std::_Vector_val<std::conditional_t<true, 
std::_Simple_types<smp::utils::kmeans::PointData>, 
std::_Vec_iter_types<smp::utils::kmeans::PointData, size_t, ptrdiff_t, 
smp::utils::kmeans::PointData *, const smp::utils::kmeans::PointData *,
 smp::utils::kmeans::PointData &, const smp::utils::kmeans::PointData &>>>>>, ranges::v3::detail::decay_t<std::_Vector_const_iterator<std::_Vector_val<std::conditional_t<true, std::_Simple_types<smp::utils::kmeans::PointData>,
 std::_Vec_iter_types<smp::utils::kmeans::PointData, size_t, ptrdiff_t, smp::utils::kmeans::PointData *, const smp::utils::kmeans::PointData *, 
smp::utils::kmeans::PointData &, const smp::utils::kmeans::PointData &>>>>>>, type>" 
to "std::vector<<unnamed>::Point, std::allocator<<unnamed>::Point>>" exists

Я не могу понять, как выполнить назначение из range :: view: : преобразовать в вектор <> любого типа.

Не уверен, что проверка типов / приведение типов стали строже или что-то в реализации std::ranges изменилось. Любая помощь будет принята с благодарностью.

...