c++20相关内容

C++概念:检查模板实例化

假设我有一个模板化类型,例如 template struct mytype { }; 如何编写检查类型是否为该模板的实例化的概念? template concept MyType = requires(T x) { ??? } 我想不出一种明显的方法来做到这一点,而不是解析为老式的专 ..
发布时间:2022-05-16 12:56:53 C/C++开发

Ranges算法与STD算法的差异

许多标准库算法在C++20中有两个版本:一个在std名称空间中,另一个在std::ranges名称空间中。例如,std::ranges::count和std::count都用于计算满足谓词的元素的数量。 为什么这些算法有两个版本? 推荐答案 Ranges功能将C++20概念添加到迭代器和范围中,并将其算法等的定义限制为这些概念。但是,C++20概念具有不同于C++17命名需求的需 ..
发布时间:2022-05-16 12:18:30 C/C++开发

从C++20开始保持或传递不可寻址的函数

C++20添加了可寻址函数16.5.4.2.1 [namespace.std]/6:--重点是我的-- 让F表示标准库函数([lobal.Functions]),a 标准库静态成员函数,或 标准库函数模板。除非F被指定为 可寻址函数,C++程序的行为未指定 (可能格式错误)如果显式或隐式尝试 指向F.的指针[注意:形成此类指针的可能方法 包括一元&;运算符([expr.unary.op ..
发布时间:2022-04-10 15:34:51 C/C++开发

将';|';(管道)运算符与std::view一起使用不能编译

在转行之后,我正在努力熟悉std::view(以及一般的函数式编程)。我在向量上使用带有std::view::Filter的‘|’(管道)运算符,我不明白为什么一些代码结构可以编译,而其他代码结构不能。 此代码创建int的向量向量,然后按总和对其进行过滤。我已经注释了这三个令我困惑的语句,前两个语句编译,第三个不编译。 编译错误为: '|': no operator found ..
发布时间:2022-04-05 16:58:14 C/C++开发

与(简单地)发生在';之前相比,';强烈发生在';之前有什么意义呢?

该标准定义了几个“在此之前发生”关系,这些关系将良好的旧“在此之前排序”扩展到多个线程: [intro.races] 11评估A仅发生在评估B之前,如果出现以下情况 (11.1)-A排在B之前,或 (11.2)-A与B同步,或 (11.3)-A在X之前,X在B之前。 [注10:在没有使用操作的情况下,在关系相同之前和简单地在关系相同之前发生。-结束语] 12评估A ..
发布时间:2022-03-07 16:51:19 C/C++开发

在哪个访问控制上下文中评估概念?

此问题是one 的后续问题 [temp.concept]/5表示: 概念未实例化([temp.spec])。 [ 注意:表示概念专门化的id表达式作为表达式([expr.prim.id])求值。[.]] 因此,命名概念专门化表达式可能因可访问性而具有不同的值。 如果是这样的话,我想知道表达式将在什么上下文中求值: 概念定义的上下文; 表达式的上下文; 表达式 ..
发布时间:2022-03-07 16:45:26 C/C++开发

Visual Studio 2019:如果不先在单独的模块(Ixx)中导入cpp文件中的C++标准库声明,则无法将其`导入

尝试使用C++20import命令加载.cpp文件中的标准库声明时,返回编译器错误,指出找不到";头单元";。 例如,在一个文件中,假设Main.cpp,我将 import ; int main() { return 0; } 以下编译器错误结果: error C7612: could not find header unit ..
发布时间:2022-03-02 18:41:12 C/C++开发