overload-resolution相关内容

调用 const 函数而不是其非 const 版本

为了我的目的,我尝试包装类似于 Qt 的共享数据指针的东西,经过测试,我发现应该调用 const 函数时,选择了它的非 const 版本. 我正在使用 C++0x 选项进行编译,这是一个最小的代码: 结构数据{int x() 常量 {返回 1;}};模板结构容器{容器() {ptr = 新 T();}T&操作员*() {puts("非常量数据指针");返回 *ptr;}T * 运算 ..

SFINAE:当重载移动到其他命名空间时,检查函数是否存在中断

我想使用 SFINAE 检查特定命名空间中是否存在函数.我发现 SFINAE 可以测试来自另一个命名空间的免费函数 可以完成这项工作,但有些事情我不明白. 目前我有这个工作代码,直接来自链接的问题: //切换到0测试其他情况#define ENABLE_FOO_BAR 1命名空间 foo {#if ENABLE_FOO_BAR整数条();#万一}命名空间细节重载{模板 ..
发布时间:2022-01-14 23:43:45 C/C++开发

ADL的陷阱是什么?

前段时间我读了一篇文章,解释了参数依赖查找的几个陷阱,但我再也找不到了.这是关于获得对你不应该访问的东西的访问权或类似的东西.所以我想我会在这里问:ADL 的陷阱是什么? 解决方案 依赖于参数的查找存在很大的问题.例如,考虑以下实用程序: #include 命名空间实用程序{模板无效打印(T x){std::cout ..

F# 和接口实现的成员

我有一个令人烦恼的错误. type Animal =抽象成员名称:字符串类型狗(名称:字符串)=接口动物与成员 this.Name : string =名称let pluto = new Dog("Pluto")让名称 = pluto.Name 最后一行,特别是“Name"会生成一个编译器错误,指出“未定义字段、构造函数或成员‘Name’". 我使用的解决方法是编写 let name ..

带有 while (true) 的特殊重载解析

当我遇到这种特殊情况时,我正在实现同步/异步重载: 当我有一个没有参数或返回值的正则 lambda 表达式时,它会进入带有 Action 参数的 Run 重载,这是可预测的.但是当该 lambda 包含 while (true) 时,它会使用 Func 参数进行重载. public void Test(){Run(() => { var name = "bar"; });Run(() => ..
发布时间:2021-12-23 22:01:43 C#/.NET