Я был на более ранней версии 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
изменилось. Любая помощь будет принята с благодарностью.