SFINAE 内部概念模板参数

2024-04-23

SFINAE 在概念论证中起作用吗? (也许这里不叫SFINAE)。例子:

template <class F>
    requires
        std::invocable<F, int> && // <-- is this needed?
        (!std::same_as<std::invoke_result_t<F, int>, void>)
auto foo(F f, int a) -> int

是上面的std::invocable<F, int>必需的?

如果我们像这样省略它:

template <class F>
    requires (!std::same_as<std::invoke_result_t<F, int>, void>)
auto foo(F f, int a) -> int

这个版本是否格式良好,即使std::invoke_result_t<F, int>不是(即如果它不可调用)或者是 UB/格式错误,ndr?

foo(11, 24);
// std::invoke_result_t<int, int> does not exist,
// is the second variant the one without `std::invocable<F, int>` ok in this case?

gcc 似乎在没有它的情况下表现:https://godbolt.org/z/SEH94- https://godbolt.org/z/SEH94-


SFINAE 仍然在有限制的情况下工作。

替换失败会导致原子约束(例如(!std::same_as<std::invoke_result_t<F, int>, void>)) 视为不满意

[温度构造原子]

3 http://eel.is/c++draft/temp.constr.atomic#3为了确定是否满足原子约束, 参数映射和模板参数首先被替换为 它的表达。如果替换导致无效类型或 表达式,不满足约束条件。否则, 如有必要,执行左值到右值的转换,并且 E 应为 bool 类型的常量表达式。满足约束条件,如果并且 仅当 E 的评估结果为 true 时。如果,在不同的点 程序中,对于相同的原子,满意的结果是不同的 约束和模板参数,程序格式错误,没有 需要诊断。 [ 例子:

template<typename T> concept C =
  sizeof(T) == 4 && !true;      // requires atomic constraints sizeof(T) == 4 and !true

template<typename T> struct S {
  constexpr operator bool() const { return true; }
};

template<typename T> requires (S<T>{})
void f(T);                      // #1
void f(int);                    // #2

void g() {
  f(0);                         // error: expression S<int>{} does not have type bool
}                               // while checking satisfaction of deduced arguments of #1;
                                // call is ill-formed even though #2 is a better match

—结束示例]

模板实参推导过程中,不满足约束导致推导过程不成功

[温度扣除]

5 http://eel.is/c++draft/temp.deduct#5...如果函数模板有关联的约束 ([temp.constr.decl]),检查这些约束是否满足 ([临时.constr.constr])。如果不满足约束,请输入 扣除失败。

古老的 SFINAE 规范在重载决策期间仍然适用,因此当替换失败时,不会考虑重载。

[温度超过]

1 http://eel.is/c++draft/temp.over#1...如果对于给定的函数模板,参数推导失败 或者合成的函数模板专门化将是 格式错误,没有这样的函数添加到候选集合中 该模板的功能...

总而言之,GCC 的行为正确,正如人们所期望的那样。

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

SFINAE 内部概念模板参数 的相关文章

  • ROWNUM 的 OracleType 是什么

    我试图参数化所有现有的 sql 但以下代码给了我一个问题 command CommandText String Format SELECT FROM 0 WHERE ROWNUM lt maxRecords command CommandT
  • 在 LINQ 查询中返回不带时间的日期

    我正在编写一个查询 我想计算按日期联系我们的呼叫中心的次数 看起来很简单 但由于联系日期字段是日期时间字段 我得到了时间 因此当我按联系日期 时间 分组时 每个联系日期实例的计数为 1 所以 我想只按日期分组 而不按时间分组 下面是我用来查
  • 在 Xamarin Android 中将图像从 URL 异步加载到 ImageView 中

    我有一个包含多个项目的 ListView 列表中的每个项目都应该有一个与之关联的图像 我创建了一个数组适配器来保存每个列表项并具有我希望加载的图像的 url 我正在尝试使用 Web 请求异步加载图像 并设置图像并在加载后在视图中更新它 但视
  • Cygwin 下使用 CMake 编译库

    我一直在尝试使用 CMake 来编译 TinyXML 作为一种迷你项目 尝试学习 CMake 作为补充 我试图将其编译成动态库并自行安装 以便它可以工作 到目前为止 我已经设法编译和安装它 但它编译成 dll 和 dll a 让它工作的唯一
  • 为什么 POSIX 允许在只读模式下超出现有文件结尾 (fseek) 进行搜索

    为什么寻找文件结尾很有用 为什么 POSIX 让我们像示例中那样在以只读方式打开的文件中进行查找 c http en cppreference com w c io fseek http en cppreference com w c io
  • 跨多个控件共享事件处理程序

    在我用 C 编写的 Windows 窗体应用程序中 我有一堆按钮 当用户的鼠标悬停在按钮上时 我希望按钮的边框发生变化 目前我有以下多个实例 每个按钮一个副本 private void btnStopServer MouseEnter ob
  • 如何在 WPF RichTextBox 中跟踪 TextPointer?

    我正在尝试了解 WPF RichTextBox 中的 TextPointer 类 我希望能够跟踪它们 以便我可以将信息与文本中的区域相关联 我目前正在使用一个非常简单的示例来尝试弄清楚发生了什么 在 PreviewKeyDown 事件中 我
  • 使用 Google Analytics API 在 C# 中显示信息

    我一整天都在寻找一个好的解决方案 但谷歌发展得太快了 我找不到有效的解决方案 我想做的是 我有一个 Web 应用程序 它有一个管理部分 用户需要登录才能查看信息 在本节中 我想显示来自 GA 的一些数据 例如某些特定网址的综合浏览量 因为我
  • C# 用数组封送结构体

    假设我有一个类似于 public struct MyStruct public float a 我想用一些自定义数组大小实例化一个这样的结构 在本例中假设为 2 然后我将其封送到字节数组中 MyStruct s new MyStruct s
  • 按字典顺序对整数数组进行排序 C++

    我想按字典顺序对一个大整数数组 例如 100 万个元素 进行排序 Example input 100 21 22 99 1 927 sorted 1 100 21 22 927 99 我用最简单的方法做到了 将所有数字转换为字符串 非常昂贵
  • 使用安全函数在 C 中将字符串添加到字符串

    我想将文件名复制到字符串并附加 cpt 但我无法使用安全函数 strcat s 来做到这一点 错误 字符串不是空终止的 我确实设置了 0 如何使用安全函数修复此问题 size strlen locatie size nieuw char m
  • 编译的表达式树会泄漏吗?

    根据我的理解 JIT 代码在程序运行时永远不会从内存中释放 这是否意味着重复调用 Compile 表达式树上会泄漏内存吗 这意味着仅在静态构造函数中编译表达式树或以其他方式缓存它们 这可能不那么简单 正确的 他们可能是GCed Lambda
  • 如何在 Team Foundation 上强制发表有意义的签入评论?

    我有一个开发团队有一个坏习惯 他们写道poor签入评论 当我们必须在团队基础上查看文件的历史记录时 这使得它成为一场噩梦 我已经启用了变更集评论政策 这样他们甚至可以在签到时留下评论 否则他们不会 我们就团队的工作质量进行了一些讨论 他们很
  • 我的 strlcpy 版本

    海湾合作委员会 4 4 4 c89 我的程序做了很多字符串处理 我不想使用 strncpy 因为它不会终止 我不能使用 strlcpy 因为它不可移植 只是几个问题 我怎样才能让我的函数正常运行 以确保它完全安全稳定 单元测试 这对于生产来
  • 在Linux中使用C/C++获取机器序列号和CPU ID

    在Linux系统中如何获取机器序列号和CPU ID 示例代码受到高度赞赏 Here http lxr linux no linux v2 6 39 arch x86 include asm processor h L173Linux 内核似
  • 方法参数内的变量赋值

    我刚刚发现 通过发现错误 你可以这样做 string s 3 int i int TryParse s hello out i returns false 使用赋值的返回值是否合法 Obviously i is but is this th
  • 如何使用 ReactiveList 以便在添加新项目时更新 UI

    我正在创建一个带有列表的 Xamarin Forms 应用程序 itemSource 是一个reactiveList 但是 向列表添加新项目不会更新 UI 这样做的正确方法是什么 列表定义 listView new ListView var
  • 如何在 C# 中播放在线资源中的 .mp3 文件?

    我的问题与此非常相似question https stackoverflow com questions 7556672 mp3 play from stream on c sharp 我有音乐网址 网址如http site com aud
  • C++ 成员函数中的“if (!this)”有多糟糕?

    如果我遇到旧代码if this return 在应用程序中 这种风险有多严重 它是一个危险的定时炸弹 需要立即在应用程序范围内进行搜索和销毁工作 还是更像是一种可以悄悄留在原处的代码气味 我不打算writing当然 执行此操作的代码 相反
  • 不同类型的指针可以互相分配吗?

    考虑到 T1 p1 T2 p2 我们可以将 p1 分配给 p2 或反之亦然吗 如果是这样 是否可以不使用强制转换来完成 或者我们必须使用强制转换 首先 让我们考虑不进行强制转换的分配 C 2018 6 5 16 1 1 列出了简单赋值的约束

随机推荐

  • CFBundle可执行错误

    无法安装应用程序 Users myname Documents SDK iPhoneApplications x build Debug iphoneos x app 处的应用程序未指定 CFBundleExecutable 我不知道这意味
  • 在 Silverlight 4 中编辑标题

    我们正在开发一个浏览器外的 Silverlight 4 应用程序 并希望在应用程序加载后更改标题 Example public partial class MainPage UserControl public MainPage Initi
  • 递归深度有限的旅行目录树

    我需要递归地处理目录树中的所有文件 但深度有限 这意味着例如在当前目录和前两个子目录级别中查找文件 但不再进一步查找 在这种情况下 我必须处理例如 subdir1 subdir2 file 但不是 subdir1 subdir2 subdi
  • Xunit 中的测试异常 ()

    我正在尝试对此方法编写 Xunit 测试 public async Task
  • 在 DLL 中,函数表的结构如何?

    我一直在研究不明确支持我的操作系统的设备库的实现 特别是 我有一个反汇编的 DLL 以及大量的支持源代码 现在 功能表 导出表是如何构造的 我的理解是 第一个结构 data部分是 RVA 表 接下来是通过索引链接到第一个地址表的字符串表 这
  • Linux 内核线程没有地址空间

    为什么Linux内核线程没有地址空间 对于任何要执行的任务 它都应该有一个内存区域 对吗 内核线程的文本和数据去了哪里 内核线程确实有一个地址空间 只是他们都有同一个 这并不妨碍它们各自拥有不同的堆栈 文本和数据放置在内核地址空间 由所有线
  • 当数据包含 UTF 8 字符时 PHP 导出 CSV

    在 MySQL 中 我将数据字段类型设置为utf8 bin我正在以 Unicode 存储数据 文本在网页中正确显示 我想生成 Excel 文件 将数据从我的表导出到其中 输出在 xls and cvs是 我在这里查看了其他答案 它被提到使用
  • 如何在Android中编写特殊字符

    我想将单位添加到我的TextView 例如幂 2 如文本行上方的小写字母 微符号 等 我怎样才能做到这一点 是的 您可以使用 Unicode 字符Textview TextView tvtext new TextView this tvTe
  • 下载NLTK数据时出现PermissionError

    我使用 Anaconda 的 Python 3 6 3 发行版 它安装了 NLTK 但没有安装我项目所需的 NLTK DATA 问题是 当我尝试安装时 nltk download I get PermissionError Errno 13
  • 如何拆分同时包含分隔符和转义分隔符的字符串?

    我的字符串分隔符是 分隔符在字符串中转义为 E g irb main 018 0 gt s a b d e gt a b d e irb main 019 0 gt s split gt a b d e 有人可以建议我正则表达式 这样 sp
  • jQuery $.live() 不适用于 iPhone 上的表格行

    我正在使用 jQuery 使表格行可点击 live 功能 可以在 Chrome Firefox 甚至桌面 Windows Safari 上完美运行 但不能在 iPhone 上运行 bind 到处都可以使用 但出于明显的原因 我想使用其他功能
  • 代码优先更改数据源,无需连接字符串

    我在创建 MVC4 应用程序时似乎遇到问题 我采用了代码优先方法来创建模型 但 web config 文件中似乎没有创建连接字符串 构建的数据库似乎是在 localhost SQLEXPRESS 实例上构建的 但我想将其更改为外部数据源 如
  • svg 中的简单填充图案:对角线阴影

    我如何填充 SVG 形状 不是使用单一颜色 图像或渐变 而是使用阴影图案 如果可能的话对角线 已经两个小时了 我什么也没发现 至少在2005年之后 我认为一个可能的破解方法是使用孵化的 PNG 作为填充 但这并不理想 我在互联网上也没有找到
  • 使用 Pandas/ExcelWriter 对单元格中的文本部分进行着色

    如何使用 pandas 数据框和 ExcelWriter 对写入 Excel 文件的部分文本进行着色 我已经设置了使用背景颜色和文本颜色以及不同内容来格式化单元格 但是您可以将格式设置仅应用于字符串 1 3 5 的单元格中的第一个逗号分隔值
  • 如何防止意外地在非常量对象上调用变异函数?

    假设我们有一个 myType 类型的对象 obj 并且我们希望将其传递给函数 Foo 该函数返回一些有关 obj 的有价值的信息 函数 Bar 是声明 obj 的地方 也是从中调用 Foo 的地方 如下所示 void Bar myType
  • Chrome 应用程序 localStorage 不持久并且 chrome.storage 不工作

    我有一个 chrome Kiosk 应用程序 我需要在机器打开和关闭之间保存数据 几个字节作为字符串 但无论我尝试什么 本地存储似乎在重新启动时都会被擦除 当我转到 chrome inspect apps 检查 Chrome 应用程序时 控
  • 合并并总结 Pandas 中的几个值计数系列

    我通常使用value counts 获取某个值出现的次数 然而 我现在处理大型数据库表 无法将其完全加载到 RAM 中 并在不到 1 个月的时间内查询数据 有没有办法存储结果value counts 并将其合并 添加到下一个结果中 我想统计
  • 数据表:根据隐藏列值隐藏行

    我在用dataTable在 jsp 中显示我的表的插件 我也想使用复选框选项 像这里的东西 数据表 根据列中的值过滤行 https stackoverflow com questions 29569492 datatables filter
  • 使用VB.NET上传文件到SFTP服务器

    我需要将文件上传到 SFTP 服务器 我正在使用 VB NET 2008 怎样才能上传一个简单的 csv使用端口号 用户名和密码等将文件从本地计算机传输到 SFTP 服务器 提前致谢 NET 常用的开源 SFTP 库是SSH NET htt
  • SFINAE 内部概念模板参数

    SFINAE 在概念论证中起作用吗 也许这里不叫SFINAE 例子 template