c++20相关内容

检测类型是来自主模板的专门化还是用户提供的专门化

假设我有这个: template class my_template {...}; 现在,用户可以针对自己的类型专门化my_template。它们会将这些类型传递给我的一些API函数,这些API函数将使用my_template的属性进行操作。 所以在我的代码中的某个点上,我有一个my_template。我想要某种类型的元函数,如果my_templ ..
发布时间:2022-05-16 15:41:52 C/C++开发

对于需要两个参数的函数,如何在向量上使用std::Range?

我一直在尝试理解新的范围库,并尝试将一些更传统的for循环转换为函数代码。cppreference给出的示例代码非常简单易懂。但是,我不确定如何对需要查看、计算和比较每个x和y值的点向量应用范围,最后哪个值的距离最大。 struct Point { double x; double y; } double ComputeDistance(const Point& p1, const ..
发布时间:2022-05-16 15:11:34 C/C++开发

如何制作跨度

C++20std::span是一个非常好的编程接口。但似乎没有一种简单的方法可以跨越多个跨度。以下是我正在尝试做的事情: #include #include #include #include void print(std::span> matrix) { for (auto ..
发布时间:2022-05-16 15:02:35 C/C++开发

Std::Memcpy即使在C++20中也不是常量的原因是什么?

我知道,在编译时复制任意内存块并不总是可能的,但既然我们得到了stexpr常量、虚方法和算法,为什么不能也复制emcpy呢?它也是一种算法。 更多, C++20std::bit_cast看起来很像std::memcpy解决办法reinterpret_cast,但它确实是constexpr。 std::copy对于C++20,使用迭代器被标记为constexpr,因此可以以某种方式复制 ..
发布时间:2022-05-16 14:51:38 C/C++开发

为什么较少引入STD::Range::?

在cppreference on std::ranges::less备注中,我们可以看到: 与std::less不同,std::ranges::less要求所有六个比较运算符、>=、==和!=都有效(通过totally_ordered_with约束)。 但是...为什么?为什么我们要使用std::ranges::less{}而不是std::less{}?如果只定义了 ..
发布时间:2022-05-16 14:37:53 C/C++开发

如何正确运用概念?

目前我正在学习C++,决定还是从C++20开始吧。但是,这些代码快把我逼疯了,因为我认为结果没有任何意义。 以下代码将打印句子Valid array.。我上面的意思是,这是不对的。它根本不应该打印句子,因为我在参数中插入的类型与概念不匹配。 使用最新的GCC和C++2A(GNU)参数在VS2022预览版3和an online compiler上进行测试,生成相同的结果。 #inclu ..
发布时间:2022-05-16 14:06:45 C/C++开发

Lambda表达式是合法的默认(非类型模板)参数吗?

以下所有标准参考引用N4861 (March 2020 post-Prague working draft/C++20 DIS)。 背景 在Q&;AAre captureless lambdas structural types?中明确指出,某些lambda表达式具有关联的闭包类型,这些闭包类型是(文本和)结构类型,因此特定的此类闭包类型可以用作非类型模板参数;本质上是将结构类型 ..
发布时间:2022-05-16 13:26:49 C/C++开发