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

栏目:国际 2021-09-29 16:08:11
分享到:

今天,我们很开心

Visual Studio 2019 v16.6正式开始支持C++20 Ranges。我们已经为系统支持的部分开发了一些版本。虽然这些很重要,但用户看不到。

然而在这个版本中,冰山一角终于打破了水面,现在一些工具终于可以供用户使用了。

Ranges的实现严格依赖于C++ Concepts,所以在C++ 20的预览模式下可以使用MSVC和Clang,但是IntelliSense并没有很好的支持它们。

有什么新东西?

>从16.3版本开始,包含概念的头文件已经随MSVC一起发布。

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

>我们在头文件中介绍了一些与Range相关的算法,如下所示:

复制,复制n和复制if

全部、任意和无

查找,查找如果,查找如果不

计数和计数_if

for _ per和for _ per _ n

相等和不匹配

下一个计划

自从STL开放以来,我们一直在官网发布STL的开发进度,所以你可以随时来官网查看我们的工作。附件Wiki中的Changelog页面实际上是一组过去和未来STL工作的发行说明,我们会随着请求的合并不断更新。

在“实现范围”中,我们记录了我们实现了范围设计的哪些部分,并大致介绍了我们的下一步工作。

在即将到来的Visual Studio 2019 v16.7中,将有更多关于Ranges的组件:

>新算法:查找结束、查找第一个和相邻查找

> reverse_iterator和move_iterator已经更新,以更好地与新的Ranges迭代类型协调,包括新添加的move_sentinel。

>子范围类模板,可用于将迭代器和sentinel聚合成一个方便的范围对象。

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

>约束透明比较函数对象类型:等于、不等于、小于、大于、小于等于、大于等于和三向比较

v16.8版本将包含更多内容:我们计划使用IntelliSense在16.8中完全支持/std: c++最新模式下的Ranges。

摘要

我完全不能理解。我喜欢C++。你去哪儿了?