第一次肉眼可见的对C++20 Ranges的支持

今儿个,咱们十分高兴

Visual Studio 2019 v16.6正式开始支持C++20 Ranges。我们已经针对系统支持的部分开发了一些版本,这些虽然很重要,但是用户看不到它们的存在。但是在此版本中,冰山一角终于打破了水面,现在终于可以有一些工具供用户使用了。Ranges的实现严格取决于C++ Concepts, 因此MSVC和Clang均可在其C++ 20的预览模式下使用,但尚未得到IntelliSense的很好支持。(请不用担心,我们很快就会得到适当的IntelliSense支持。)

都有什么新东西?

从v16.3开始,包含有concepts的头文件就已经随MSVC一起发布了

这个头文件中包含了std::ranges::swap,有点类似于std::swap。

我们在头文件中引入了一些Range有关的算法,具体如下:

copy, copy_n, 和copy_if

all_of, any_of, 和 none_of

find,find_if, 和 find_if_not

count 和 count_if

for_each 和 for_each_n

equal 和 mismatch

接下来的计划

自从STL开源以来,我们就一直在官网上公布STL的开发进展,因此你可以随时来到官网页面来查看我们的工作。附件Wiki中的Changelog页面实际上是过去和将来STL工作的一组发行说明,随着请求的不断合并,我们也会不断对其进行更新。

在”Implement Ranges”中记录了我们实现了范围设计的哪些部分,同时也粗略地介绍了我们接下来将要进行的工作。

在即将到来的Visual Studio 2019 v16.7(当前还处于预览版)中,将包含有关Ranges的更多组件:

新算法:find_end, find_first_of, 和 adjacent_find

对reverse_iterator和move_iterator进行了更新,以便可以更好地和新的Ranges迭代类型一起协调工作,包括新增加的move_sentinel。

subrange类模板,它可以用来将迭代器和sentinel一起聚合到一个方便的range对象中。(实际上上一个视图)

视图类型的view_interface基类可以继承一些简单行为的默认实现

约束透明比较函数对象类型:equal_to, not_equal_to, less, greater, less_equal, greater_equal, 和compare_three_way

v16.8版本将会包含更多的东西:我们计划是在16.8中使用IntelliSense完全支持/std: c++ latest模式下的Ranges。

总结

老夫完全看不懂,我喜欢的那个C++,你去哪儿了?

第一次肉眼可见的对C++20 Ranges的支持_第1张图片

你可能感兴趣的:(Visual,Studio)