c++-concepts相关内容

C++的概念和Rust的特征有什么相似之处和不同之处?

在Rust中,抽象的主要工具是特征。在C++中,有两种抽象工具:抽象类和模板。为了摆脱使用模板的一些缺点(例如,难以读取错误消息),C++引入了概念,它们是"named sets of requirements"。 这两个功能似乎非常相似: 定义特征/概念是通过列出需求来完成的。 两者都可用于绑定/限制泛型/模板类型参数。 Rust特征和带有概念的C++模板都是单一化的(我知道Ru ..
发布时间:2022-05-25 18:47:06 C/C++开发

C++概念成员检查类型与引用的不一致

我正在学习C++概念,我有一个讨厌的问题: 我不知道如何区分成员变量是int类型的变量和成员变量是int&类型。 原因是我正在使用的检查使用的是instance.ember语法,而在C++中,它返回一个引用。 完整示例: #include #include template void print(T t) ..
发布时间:2022-05-17 12:58:08 C/C++开发

概念(C++20)可以用作布尔值吗?

using T = decltype(std::same_as) 我已经在VS2019上试过了。结果是T = bool。 这是由标准定义的,还是仅由特定编译器定义的属性? 我还没有找到关于这件事的任何官方消息。 https://en.cppreference.com/w/cpp/concepts 推荐答案 AConcept-idLikestd::same ..
发布时间:2022-05-17 11:43:43 C/C++开发

如何删除C++概念

我正在尝试实现一个小型网络库来学习概念,并且我正在尝试找到一种方法来定义简洁的概念,而不必在依赖的概念上携带模板参数。例如,我有以下概念: template concept bool Value = true; template concept bool Buffer = requires(BufferT buf) ..
发布时间:2022-05-17 09:00:43 C/C++开发

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

我在阅读一些概念定义时,多次发现术语等于,如Swappable: 让t1和t2为保持相等表达式,这些表达式表示类型为T的不同的相等对象, 等于是否在标准中的某个位置定义?我猜想这意味着两个对象的语义或它们引用的值(赋予它们表示的域值的人类语义)是相同的,即使这两个对象不具有可比性(无operator==重载),或者类似的抽象(例如,如果a == b是有效的表达式,则两个对象a和b是相等 ..
发布时间:2022-05-16 21:33:28 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引入了一个比较概念boolean-testable,但我注意到它的斜体和中间的连字符,表示它只用于展示,由于中没有所谓的std::boolean_testable,我们不能在我们自己的代码中使用它。 此仅展示概念的用途是什么?为什么这个概念如此神秘? 推荐答案 其目的与所有仅用于说明的概念一样,是为了简化标准中的规范。它只是一个构建块,用于指定其他( ..
发布时间:2022-05-16 18:35:39 C/C++开发

将clang格式与c++20概念结合使用

我研究了clang-Format样式选项https://clang.llvm.org/docs/ClangFormatStyleOptions.html,但没有看到任何与c++概念和REQUIRED子句的引用。通常我可以配置clang-Format来做我想做的事情,但我想不出如何让它很好地处理我的概念和要求子句: 当前clang-Format对我的概念做了这样的处理: template ..
发布时间:2022-05-16 17:33:30 其他开发