c++20相关内容

解释ITER特征的C++20标准描述

谁能给我解释一下iterator.concepts.general#1中的这一行在C++标准草案中是什么意思: 对于类型I,ITER_­TRAITS(I)表示I如果iterator_­traits命名从主模板生成的专门化。否则,ITER_­TRAITS(I)表示iterator_­traits。 推荐答案 主iterator_traits模板将从I的对应成员中填 ..
发布时间:2022-05-16 23:44:21 C/C++开发

C++20 std::Range:每隔n个元素跳过的范围适配器

我正在努力更多地了解C++20的std::ranges实现,我遇到了一个看似简单的问题,如果不滚动我自己的实现,我就找不到标准的解决方案。 问题很简单:我只想使用C++20范围适配器访问和处理范围中每N个元素的和。例如,我正在寻找一个实用程序,该实用程序具有以下内容: for (auto x : std::ranges::iota_view{0, 10} | std::ranges:: ..
发布时间:2022-05-16 23:32:30 C/C++开发

比率乘法过程中的Timo::DATION_CAST问题

我正在编写一些必须处理NTP时间的代码。我决定用std::chrono::duration来表示它们,我希望这会让我的时间数学更容易做。 NTP时间由无符号64位整数表示,从纪元开始的秒数在高32位,小数秒在低32位。划时代的日期是1900年1月1日,但这是一个与我在这里处理的问题不同的问题,我已经知道如何处理它。对于我正在使用的示例,假设纪元为1970年1月1日,以使计算更简单。 持续时 ..
发布时间:2022-05-16 23:19:44 C/C++开发

有可能使用模板吗?

我正在尝试制作一些模板版本的consteval函数,我不清楚这里是否有任何限制。 template consteval T max(const T& a, const T& b) { return (a > b) ? a : b; } template consteval T mid(const T& a, const T& b, ..
发布时间:2022-05-16 23:07:36 C/C++开发

如何使使用基类构造函数的派生类的参数演绎工作?

当派生类使用基类构造函数时,演绎似乎总是fail。然而,当基类有许多构造函数时,重新定义所有构造函数是非常笨拙的。当基类使用新的构造函数快速演变时,这也是一件痛苦的事情。这个老问题是在两年多前提出的,所以我想知道:到2020年,当c++17和c++2a可用时,有什么办法可以解决这个问题吗? template class base_t { public: ..
发布时间:2022-05-16 22:47:44 C/C++开发

C++20范围和排序

我正在处理C++20的最后四大特性,试图学习新的主要特性。 试着从网络上下载一些与范围相关的代码,我写道: std::vector ints{ 6, 5, 2, 8 }; auto even = [](int i) { return 0 == i % 2; }; // ranges... auto rr = ints | std::views::filter(even) ..
发布时间:2022-05-16 22:32:46 C/C++开发

我们能用C++20构建带有视图的容器吗?

Range即将使用C++20标准版本。 我的问题是:我们是否能够构建具有任何范围的(现有)标准库容器?更重要的是,使用范围视图? 例如,这是否会: #include #include #include int main() { auto sq = [](int x) { return x * x; }; st ..
发布时间:2022-05-16 22:25:18 C/C++开发

GCC如何使用C++20模块?

我目前正在使用GCC 10.1.0尝试名为模块的C++20的新功能,如here所述,然而,如果我尝试构建以下代码片段,编译器会抛出一堆错误。 这是我到目前为止写的代码片段: // helloworld.cpp export module helloworld; // module declaration import ; // import dec ..
发布时间:2022-05-16 22:20:10 C/C++开发

C++20 P0784R7非瞬时分配太脆弱vs.P1004R2常量表达式std::VECTOR

我想在C++20中创建一个广泛的constexpr数据存储库。数以万计的本机C++对象作为&q;文本段&即请求分页加载到进程中并在实例之间共享(生成代码)。 对象相互引用,需要通过各种属性、交叉引用等进行索引,所有这些都希望在编译时完成。这需要constexpr(关联)容器,但不能使用模板化(按大小、散列大小等)完成。容器,因为一切都需要保持多态。 首先这似乎是不可能的,因为C++20 ..
发布时间:2022-05-16 22:16:05 C/C++开发

如何从CMake命令行跳过C++标准?

目前我有一个项目需要C++17,因此在CMakeLists.txt中我很早就有这样一行: set(CMAKE_CXX_STANDARD 17) 从命令行(cmake),偶尔我想测试一下该项目是否也可以用C++20编译。(以避免意外)。 如何选择从命令行使用C++20编译? 如果我这样做cmake -DCMAKE_CXX_STANDARD=20,则它稍后会被配置覆盖,而不是17 ..
发布时间:2022-05-16 21:58:48 C/C++开发

如何用clang和mingw-w64编译?

我正在尝试将clang10与mingw-w64的libstdc++一起使用,因为MSVC头文件不支持clang 10。我不介意没有标准库的新部分,我只想使用新的语言功能。 我安装了用于x86_64的mingw-w64 8.1.0版,并安装了POSIX线程和SEH异常,并使用以下命令运行clang: clang++ -target x86_64-pc-windows-gnu -std=c ..
发布时间:2022-05-16 21:54:32 C/C++开发

C++20个概念中的等同概念

我在阅读一些概念定义时,多次发现术语等于,如Swappable: 让t1和t2为保持相等表达式,这些表达式表示类型为T的不同的相等对象, 等于是否在标准中的某个位置定义?我猜想这意味着两个对象的语义或它们引用的值(赋予它们表示的域值的人类语义)是相同的,即使这两个对象不具有可比性(无operator==重载),或者类似的抽象(例如,如果a == b是有效的表达式,则两个对象a和b是相等 ..
发布时间:2022-05-16 21:33:28 C/C++开发