0

我使用的是 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::transform 分配到任何类型的 vector<> 。

不确定类型检查/强制转换是否变得更严格,或者实现中的某些内容是否发生了std::ranges变化。你们的任何帮助将不胜感激。

4

0 回答 0