临时约束需要需要需要需要吗?

2023-11-21

假设我正在编写一个类模板,其中一些成员的存在受到限制和价值类型模板参数 static constexpr 数据成员的:

template<class T>
struct A {
    constexpr bool operator()() requires T::value { return T::value; }
    constexpr bool operator()() { return false; }
};
#include <type_traits>
static_assert(A<std::true_type>()());
static_assert(!A<std::false_type>()());
static_assert(!A<void>()());

MSVC 和 gcc 接受这一点,但 clang 拒绝,除非我replace requires T::value with requires requires { requires T::value; }。这是 clang 中的错误,还是其他编译器松懈? C++ 是否需要需要需要需要?标准怎么说?

相关(嗯,至少 ⅔):为什么我们需要需要需要?


这是一个 clang bug(已提交#49513).

看起来 clang 正在替代void into T::value并决定因为这是一个无效的表达式,所以约束是invalid。但规则,在[温度构造原子]就是它:

为了确定是否满足原子约束,首先将参数映射和模板实参替换到其表达式中。如果替换导致无效类型或表达式,则不满足约束。

在这种情况下,替换会导致无效的类型或表达式,因此其结果应该是不满足约束。


请注意,此重载:

constexpr bool operator()() requires T::value { return T::value; }

仅在以下情况下有效T::value是一个有效的表达式and评估为true。这使得它相当于:

constexpr bool operator()() requires T::value { return true; }

在这种情况下这很好,因为你要回来false无论如何,在另一种情况下,所以没有理由区分T::value存在但是是false from T::value不存在。

但认为无论如何还是值得澄清的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

临时约束需要需要需要需要吗? 的相关文章

  • 如何从字符串中提取子字符串直到遇到第二个空格?

    我有一个像这样的字符串 o1 1232 5467 1232 5467 1232 5467 1232 5467 1232 5467 1232 5467 如何仅提取 o1 1232 5467 要提取的字符数并不总是相同 因此 我只想提取直到遇到
  • C# SmtpClient编程中如何设置带有中文的附件文件名?

    我的代码如下 ContentType ct new ContentType ct MediaType MediaTypeNames Application Octet ct Name 这是一个很长的中文文件名希望能用它在附件名中 Doc A
  • 静态构造函数和 BeforeFieldInit?

    如果类型没有静态构造函数 则将执行字段初始值设定项 就在使用该类型之前 或者在某个时间点突发奇想 运行时 为什么这段代码 void Main start Dump Test EchoAndReturn Hello end Dump clas
  • 使用 ADAL v3 使用 ClientID 对 Dynamics 365 进行身份验证

    我正在尝试对我们的在线 Dynamics CRM 进行身份验证以使用可用的 API 我能找到的唯一关于执行此操作的官方文档是 https learn microsoft com en us dynamics365 customer enga
  • 是否可以使用 http url 作为 DirectShow .Net 中源过滤器的源位置?

    我正在使用 DirectShow Net 库创建一个过滤器图 该过滤器图通过使用 http 地址和 WM Asf Writer 来流式传输视频 然后 在网页上 我可以使用对象元素在 Windows Media Player 对象中呈现视频源
  • EntityHydrate 任务失败

    我最近安装了 Visual Studio 11 Beta 和 Visual Studio 2010 之后 我无法在 Visual Studio 2010 中构建依赖于 PostSharp 的项目 因此我卸载了 Visual Studio 1
  • 在 C++ 代码中转换字符串

    我正在学习 C 并开发一个项目来练习 但现在我想在代码中转换一个变量 字符串 就像这样 用户有一个包含 C 代码的文件 但我希望我的程序读取该文件并插入将其写入代码中 如下所示 include
  • 在 Mono 中反序列化 JSON 数据

    使用 Monodroid 时 是否有一种简单的方法可以将简单的 JSON 字符串反序列化为 NET 对象 System Json 只提供序列化 不提供反序列化 我尝试过的各种第三方库都会导致 Mono Monodroid 出现问题 谢谢 f
  • 2个对象,完全相同(除了命名空间)c#

    我正在使用第三方的一组网络服务 但遇到了一个小障碍 在我手动创建将每个属性从源复制到目标的方法之前 我想我应该在这里寻求更好的解决方案 我有 2 个对象 一个是 Customer CustomerParty 类型 另一个是 Appointm
  • 混合模型优先和代码优先

    我们使用模型优先方法创建了一个 Web 应用程序 一名新开发人员进入该项目 并使用代码优先方法 使用数据库文件 创建了一个新的自定义模型 这 这是代码第一个数据库上下文 namespace WVITDB DAL public class D
  • 如何向 Mono.ZeroConf 注册服务?

    我正在尝试测试 ZeroConf 示例http www mono project com Mono Zeroconf http www mono project com Mono Zeroconf 我正在运行 OpenSuse 11 和 M
  • JavaScript 错误:MVC2 视图中的条件编译已关闭

    我试图在 MVC2 视图页面中单击时调用 JavaScript 函数 a href Select a JavaScript 函数 function SelectBenefit id code alert id alert code 这里 b
  • C# 根据当前日期传递日期时间值

    我正在尝试根据 sql server 中的两个日期获取记录 Select from table where CreatedDate between StartDate and EndDate我通过了5 12 2010 and 5 12 20
  • 如何防止 Blazor NavLink 组件的默认导航

    从 Blazor 3 1 Preview 2 开始 应该可以防止默认导航行为 https devblogs microsoft com aspnet asp net core updates in net core 3 1 preview
  • SQLAPI++ 的免费替代品? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 是否有任何免费 也许是开源 的替代品SQLAPI http www sqlapi com 这个库看起来
  • 以编程方式创建 Blob 存储容器

    我有一个要求 即在创建公司时 在我的 storageaccount 中创建关联的 blob 存储容器 并将容器名称设置为传入的字符串变量 我已尝试以下操作 public void AddCompanyStorage string subDo
  • 如何在C#中控制datagridview光标移动

    我希望 datagridview 光标向右移动到下一列 而不是在向单元格输入数据后移动到下一行 我试图通过 dataGridView1 KeyDown 事件捕获键来控制光标 但这并不能阻止光标在将数据输入到单元格后移动到下一行 提前感谢你的
  • 如何高效计算连续数的数字积?

    我正在尝试计算数字序列中每个数字的数字乘积 例如 21 22 23 98 99 将会 2 4 6 72 81 为了降低复杂性 我只会考虑 连续的数字 http simple wikipedia org wiki Consecutive in
  • 如果将变量设置为等于新对象,旧对象会发生什么?

    假设我们有一个 X 类not有一个超载的operator 功能 class X int n X n 0 X int n n n int main X a 1 an object gets constructed here more code
  • 如何为有时异步的操作创建和实现接口

    假设我有数百个类 它们使用 计算 方法实现公共接口 一些类将执行异步 例如读取文件 而实现相同接口的其他类将执行同步代码 例如将两个数字相加 为了维护和性能 对此进行编码的好方法是什么 到目前为止我读到的帖子总是建议将异步 等待方法冒泡给调

随机推荐

  • 使用 Linq 重叠两个日期之间的记录

    在我的应用程序中 用户可以委托另一个用户批准订单 我需要验证的是 没有循环引用 所以如果User A是已委托User B在一定时期内 User B不能委托User A对于该期间内的任何时间 即存在重叠 日期dd mm yyyy Delega
  • 如何从 Java 密钥库中的证书链中仅删除一个证书

    我有一个 Tomcat 服务器 其 HTTPS 证书链存储在 Java 密钥库中 该链包含自签名根 CA 证书 虽然这显然没问题TLS 规范 一些验证服务对此发出警告 并且最好还是把它关掉 如何编辑密钥库以仅删除自签名根 CA 证书 但保持
  • 如何将模块路径添加到python?

    我尝试构建 V8 javascript 引擎 当我尝试调用命令时python build git v8 我收到错误 File build gyp v8 line 48 in lt module gt import gyp ImportErr
  • webrtc和peerjs:如何选择H264而不是vp8?

    我确实使用peerjshttps peerjs com在 2 个对等点之间建立连接 有没有办法强制使用 H264 代码而不是 VP8 Regards Update 您可以使用设置编解码器首选项一旦浏览器支持 即可达到相同的结果 旧答案 您必
  • Perl:具有共享多维哈希的线程

    我正在尝试在多个线程上共享多维哈希 这个哈希保存了2个连接的密钥对 我需要知道它们是否已经连接 如果没有 我需要连接它们 如果没有 则不需要去数据库 use threads use threads shared my FLUobject2p
  • jquery getJSON函数计时问题

    我认为我的程序正在跳过 JSON 调用的结果 是否可以在此处创建一个闭包函数或让程序等待 JSON 调用返回 function username not duplicate username var function name get us
  • 我可以将图像转换为 CSS3 吗? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 假设我有一个像这样的多边形图像PNG文件 没有边框 形状填充一种颜色 没有渐变 图像背景是透明的 http www enchantedlearnin
  • 拖放后将 RecyclerView 项存储在 SQLite 中的新位置

    我有一个二维ArrayList类型的String这是适配器类的输入RecyclerView 列表中的数据每次都从 SQLite 数据库中获取onResume 叫做 我已经实现了拖放功能和onMove 成功交换列表元素的函数 但是 我需要先存
  • CKEditor 5 显示视频元素,但插入 div 中的纯 HTML 不显示该元素

    我正在创建一个课程编辑器 用户可以编辑内容 文本 视频 链接 图像等 或查看最终结果 渲染的 html 编辑器工作正常 但是当我显示渲染的 html 时 链接的 YouTube 视频不可见 这是编辑器部分 您可以看到链接的视频可见 这是 渲
  • Mathematica 中 == 和 === 的区别

    我的印象是 是一个作业 是数字比较 并且 是一个符号比较 以及在其他一些语言中 being equal to and being identical to 然而 看看下面的内容 情况似乎不一定如此 In x x Out True In x
  • 如何使用 Content-MD5 将对象放入 s3

    我尝试使用 boto3 将 XML 文件上传到 S3 根据亚马逊的建议 我想发送数据的 Base64 编码 MD5 128 位摘要 Content MD5 https docs aws amazon com AmazonS3 latest
  • Laravel 与 Docker 连接 MySQL 的问题

    我使用 Docker 设置 Laravel 的步骤 在我的本地系统中 我没有安装 PHP Composer Apache MySQL phpMyAdmin 等 我的系统中只安装了 Git 和 Docker 克隆https github co
  • xdebug.start_start_with_request=yes 如果调试客户端未侦听,则不会出现错误

    我曾经对 Xdebug 2 有以下配置 xdebug default enable 1 当没有调试客户端正在侦听时 Xdebug 不会减慢执行速度 但是当我需要调试某些内容时 我只需在 PhpStorm 中启用侦听并刷新页面即可 为此不需要
  • 如何使用 SwiftUI 和组合检测日期选择器的值变化?

    在使用 SwiftUI 和合并时 如何检测日期选择器值的变化 每当移动日期选择器轮时 我需要调用一个方法 以更新文本和滑块 我已经寻找了特定的方法来识别值的变化 使用 UIKit 可以将操作与事件关联起来 但显然我没有在文档中找到任何有用的
  • 为什么 hibernate 执行两个查询来急切加载 @OneToOne 双向关联?

    我有一个实体 A 它有一个 B 实体 而 B 有一个带有 OneToOne 双向关联的 A 现在 当我找到所有 A 记录时 hibernate 会在 B 上使用左外连接执行两个查询 如下所示 select a id a id b a fie
  • 使用 PHP 和 C# 进行 Mcrypt 和 Base64

    我在两个平台上编写了相同的方法 我相信这应该会产生相同的结果 但它没有发生 我用相同的密钥加密了相同的文本 但结果不同 有人能弄清楚为什么会发生吗 String 这是测试 Key 1234567812345678 PHP加密字符串 ybUa
  • R随机将数据分成两部分

    我试图将我的数据框随机分成两部分 例如 我想将随机 70 的数据放入一个数据框中 将另外 30 的数据放入另一个数据框中 有没有快速的方法来做到这一点 原始数据帧中的行数超过 800000 我尝试使用 for 循环 从行数中选择一个随机数
  • 在特定位置截断 UILabel

    我使用表格视图显示书籍列表 其中每个单元格都有一个UILabel显示书名和另一本书UILabel显示该书的作者 我的问题是关于作者标签的 一本书可以有多个作者 我希望它的行为如下 如果书只有一位作者 约翰 科尔曼 标签应为 约翰 科尔曼 如
  • 需要默认选择 Angular JS 单选按钮

    我是 Angular JS 的新手 我正在尝试创建一组单选按钮 创建按钮是很容易的部分 但我在弄清楚如何默认选择其中一个而不破坏所有内容时遇到问题 我已经在 Angular 文档和多个其他 stackoverflow 问题中阅读了有关使用
  • 临时约束需要需要需要需要吗?

    假设我正在编写一个类模板 其中一些成员的存在受到限制和价值类型模板参数 static constexpr 数据成员的 template