c++20相关内容

C++20:如何按大小划分范围?

我要将范围{1, 2, 3, 4, 5}拆分为任意大小的子范围>;(例如,大小为2:{{1, 2}, {3, 4}, {5}})。 但std::views::split仅按分隔符拆分。 是否没有标准的反向联接或其他方法来执行此操作? 推荐答案 Range-v3调用此算法chunk。C++20中没有这样的范围适配器,但它是以相同名称为C++23建议的集合的一部分。For exa ..
发布时间:2022-05-16 21:13:08 C/C++开发

C++20概念:元素可迭代概念

我正在尝试创建一个概念ElementIterable,它可以确定类型是否为嵌套区域。例如,std::vector中的元素是不可迭代的,但std::vector>中的元素(std::vector)是可迭代的。关于使用std::iterator_traits的想法出现在我的脑海中,实验代码如下所示。然而,这个ElementIterable概念 ..
发布时间:2022-05-16 20:46:21 C/C++开发

如何在C++20计时器中向日期添加天数?

给定C++20中的新工具,如何向日期添加某些天数(例如n)? 当我尝试执行此操作时,出现编译时错误: auto d = July/4/2020; auto d2 = d + days{5}; ~ ^ ~~~~~~~ error: invalid operands to binary expression ('std::chrono::year_ ..
发布时间:2022-05-16 20:40:51 C/C++开发

C++范围支持视图中的投影吗?

我知道Range中的算法(例如sort)支持投影,但在我看来,没有办法获得视图的这种功能... 我说的对吗? 以following working code为例: #include #include #include #include enum Color { Red, Green, ..
发布时间:2022-05-16 20:32:23 C/C++开发

STD::STRONG_ORDING和STD::STWAY_ORDING的现实意义

我读了一些关于C++20的consistent comparison(即operator)的内容,但无法理解std::strong_ordering和std::weak_ordering之间的实际区别(_equality版本也是如此)。 除了描述类型的可替换性之外,它还会影响生成的代码吗?它是否添加了任何有关如何使用该类型的约束? 我很想看到一个真实的例子来证明这一点。 推荐答案 ..
发布时间:2022-05-16 20:00:10 C/C++开发

C++20概念/需要表达式来测试泛型lambda是否接受类型

我试图在编译时验证给定的lambda是否接受某种类型(在我的示例代码中为Double)。只要lambda的签名明确指定了类型,它就可以工作。但是,只要我在签名中使用带有AUTO的泛型lambda,在计算Requires语句时就会出现编译错误。 以下代码片段说明了该问题(also on compiler explorer) #include #include ..
发布时间:2022-05-16 19:30:49 C/C++开发

使用consteval而不是conexpr函数有什么好处?

我知道需求的不同,我最感兴趣的是它带来的代码质量带来的好处。 我能想到的几件事: 读者只需阅读函数签名即可知道该函数是在编译时计算的 编译器可能会发出较少的代码,因为constevalFN从不在运行时使用(这只是推测,我没有这方面的真实数据) 不需要有变量来强制ctfe,最后的示例 注意:如果代码质量太模糊,我理解有些人可能想结束这个问题,对我来说,代码质量并不是那个模糊的术 ..
发布时间:2022-05-16 18:39:59 C/C++开发

C++20概念的布尔可测试性之谜

C++20引入了一个比较概念boolean-testable,但我注意到它的斜体和中间的连字符,表示它只用于展示,由于中没有所谓的std::boolean_testable,我们不能在我们自己的代码中使用它。 此仅展示概念的用途是什么?为什么这个概念如此神秘? 推荐答案 其目的与所有仅用于说明的概念一样,是为了简化标准中的规范。它只是一个构建块,用于指定其他( ..
发布时间:2022-05-16 18:35:39 C/C++开发