在其自己的成员函数中构造类时,如何强制类模板参数推导?

2023-11-24

考虑以下代码:

struct A {};

template <typename T> struct B
{
    B(T) {}
    auto foo() {return B(A{});} // error: no matching function for call to 'B<int>::B(A)'
};

auto foo() {return B(A{});} // compiles

int main()
{
    foo();
    B b(0);
    b.foo();
}

Try it live

我明白为什么B::foo()无法编译:内部struct B<T>, B(作为注入类名)意味着B<T>除非它明确用作模板。在这种情况下,这会阻止类模板参数推导。

假设我做不到auto foo() {return B<A>(A{});}因为我的实际代码依赖于用户提供的稍微复杂的推导指南。

问题是:构造时如何强制类模板参数推导B代替B::foo?

I hope I'm not missing something obvious.


您对其进行限定,使其不是注入的类名称。

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

在其自己的成员函数中构造类时,如何强制类模板参数推导? 的相关文章

  • 将运算符 << 添加到 std::vector

    我想添加operator lt lt to std vector
  • Qt - QProcess 不工作

    我尝试启动 Internet Explorer 所以我使用下面的代码 QProcess process new QProcess this QString temp C Program Files Internet Explorer iex
  • Environment.CurrentDirectory 与 System.IO.Directory.GetCurrentDirectory

    我正在编写一个 Net WinForms 并不断在调试和发布配置之间切换 并且有一些文件我需要任一配置才能访问 我想做的是将文件放在 BIN 文件夹中的公共目录中 这样它看起来像这样 MyProject Bin CommonFiles My
  • 传递 constexpr 对象

    我决定给予新的C 14的定义constexpr旋转并充分利用它 我决定编写一个小的编译时字符串解析器 然而 我正在努力保持我的对象constexpr将其传递给函数时 考虑以下代码 include
  • 有些有助于理解“产量”

    在我不断追求少吸的过程中 我试图理解 产量 的说法 但我不断遇到同样的错误 someMethod 的主体不能是迭代器块 因为 System Collections Generic List 不是迭代器接口类型 这是我被卡住的代码 forea
  • 如何将 .txt 文件中的数据转换为 xml? C#

    我在一个文本文件中有数千行数据 我想通过将其转换为更容易搜索的内容来轻松搜索 我希望 XML 或其他类型的大型数据结构 尽管我不确定它是否是最好的对于我的想法 每行的数据如下所示 第 31 册 托马斯 乔治 32 34 154 每本书都不是
  • 如何在 C# Designer.cs 代码中使用常量字符串?

    如何在 designer cs 文件中引用常量字符串 一个直接的答案是在我的 cs 文件中创建一个私有字符串变量 然后编辑 Designer cs 文件以使用此变量 而不是对字符串进行硬编码 但设计者不喜欢这样抛出错误 我明白为什么这行不通
  • 在 VS 中运行时如何查看 C# 控制台程序的输出?

    我刚刚编写了一个名为 helloworld 的聪明程序 它是一个 C NET 4 5 控制台应用程序 在扭曲的嵌套逻辑迷宫深处 使用了 Console WriteLine 当我在命令行运行它时 它会运行并且我会看到输出 我可以执行其他命令并
  • 如何使用 x64 运行 cl?

    我遇到了和这里同样的问题致命错误 C1034 windows h 未设置包含路径 https stackoverflow com questions 931652 fatal error c1034 windows h no include
  • 模板外部链接?谁能解释一下吗?

    模板名称具有链接 3 5 非成员函数模板可以有内部链接 任何其他模板名称应具有外部链接 从具有内部链接的模板生成的实体与在其他翻译单元中生成的所有实体不同 我知道使用关键字的外部链接 extern C EX extern C templat
  • C++ 对象用 new 创建,用 free() 销毁;这有多糟糕?

    我正在修改一个相对较大的 C 程序 不幸的是 并不总是清楚我之前的人使用的是 C 还是 C 语法 这是在一所大学的电气工程系 我们 EE 总是想用 C 来做所有事情 不幸的是 在这种情况下 人们实际上可以逃脱惩罚 但是 如果有人创建一个对象
  • 模板类中的无效数据类型生成编译时错误?

    我正在使用 C 创建一个字符串类 我希望该类仅接受数据类型 char 和 wchar t 并且我希望编译器在编译时使用 error 捕获任何无效数据类型 我不喜欢使用assert 我怎样才能做到这一点 您可以使用静态断言 促进提供一个 ht
  • C++:为什么 numeric_limits 对它不知道的类型起作用?

    我创建了自己的类型 没有任何比较器 也没有专门化std numeric limits 尽管如此 由于某种原因 std numeric limits
  • WPF DataGrid / ListView 绑定到数组 mvvm

    我们假设你有 N 个整数的数组 表示行数的整数值 在模型中 该整数绑定到视图中的 ComboBox Q1 如何将数组 或数组的各个项目 绑定到 DataGrid 或 ListView 控件 以便 当您更改 ComboBox 值时 只有那么多
  • 代码中的.net Access Forms身份验证“超时”值

    我正在向我的应用程序添加注销过期警报 并希望从我的代码访问我的 web config 表单身份验证 超时 值 我有什么办法可以做到这一点吗 我认为您可以从 FormsAuthentication 静态类方法中读取它 这比直接读取 web c
  • C++:二叉树所有节点值的总和

    我正在准备面试 我被一个二叉树问题困住了 我们如何计算二叉树所有节点中存在的值的总和 优雅的递归解决方案 伪代码 def sum node if node NULL return 0 return node gt value sum nod
  • 了解 Lambda 表达式和委托 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我已经尝试解决这个问题很长一段时间了 阅读在线博客和文章 但到目前为止还没有成功 什么是代表 什么是 Lambda 表达式 两者的优点
  • 为什么空循环使用如此多的处理器时间?

    如果我的代码中有一个空的 while 循环 例如 while true 它将把处理器的使用率提高到大约 25 但是 如果我执行以下操作 while true Sleep 1 它只会使用大约1 那么这是为什么呢 更新 感谢所有精彩的回复 但我
  • 是否允许全局静态标识符以单个 _ 开头?

    换句话说 可能static 文件范围 全局变量恰好以一个下划线开头 而不会产生与 C 实现发生名称冲突的可能性 https www gnu org software libc manual html node Reserved Names
  • 如何在 C 中将 char 连接到 char* ?

    我怎样才能前置char c to char myChar 我有c值为 A and myChar值为 LL 我怎样才能前置c to myChar使 ALL 这应该有效 include

随机推荐

  • 如何设置TextInputLayout错误消息颜色?

    如何更改可设置为显示在文本字段下方的错误消息的颜色TextInputLayout via setError 在这里查看错误状态 它通常显示为红色 我想改变它 我应该在我的项目中使用哪些项目名称 键styles xml文件来定位颜色 Edit
  • 使用 Jenkins 从机器 B 运行机器 A 的构建

    我有 2 台电脑 Com A Com B 我在 Com A 上使用 selenium webdriver Testng 和 maven 构建自动化功能脚本 Com A 已经安装了 Jenkins 的所有内容 但 Com B 只有 jenki
  • 避免 WordPress 插件上的 jquery 冲突的防弹方法

    我开发 WordPress 插件已经有一段时间了 我的所有插件似乎总是遇到以下问题 Jquery 冲突问题 我尝试了很多不同的方法来避免这些问题 但我总是让用户联系我说 当他们安装了我的一个插件时 它已经阻止了另一个插件的工作aahhhhh
  • 使用 swift 在图像上覆盖文本

    我正在尝试使用 Swift 在图像上覆盖一些文本 并在此处查看此代码 src 如何在 iOS Swift 中向图像添加文本 这会将文本置于正中央 我一直在改变价值观 var rect CGRectMake 10 150 inImage si
  • 如何获取android中停止服务的意图

    我在用stopService 停止服务 我想发送额外的数据意图 如何在服务中检索这些额外数据 据我所知 这个Intent未交付至Service以任何方式 代替stopService 您可以使用startService 传递您的额外内容 并在
  • 将新节点添加到现有 XmlDocument 对象

    我有一个以下格式的 xml
  • 玩!框架 - 视图未编译?

    我创建了一个新项目并使用 eclipse 使用eclipsify命令 基本上 我移动了app目录从旧项目到我创建的新项目 问题是 eclipse 无法识别这些视图 我收到如下错误 views html viewTopic 无法解析为类型 我
  • 反序列化期间未知元素将被忽略

    当我使用 XmlTextReader 反序列化 XML 文档时 没有相应类的文本元素将被简单地忽略 Note 这是not关于 XML 中缺少的元素 这些元素需要存在 而是存在于 XML 文本中 而在代码中没有等效属性 我本希望得到一个异常
  • 如何将日期时间格式设置为 24 小时时间?

    我需要日期时间中的字符串来以 24 小时格式显示时间 var curr DateTime Now string s Console WriteLine s 输出结果必须是 16 38 谢谢 使用大写HH对于 24 小时格式 String s
  • python合并两个列表(偶数/奇数元素)

    给定两个列表 我想合并它们 以便第一个列表中的所有元素都是偶数索引 保留它们的顺序 第二个列表中的所有元素都是奇数索引 也保留它们的顺序 下面的例子 x 0 1 2 y 3 4 result 0 3 1 4 2 我可以使用 for 循环来做
  • Laravel 没有数据库连接

    有没有一种方法可以在没有数据库连接的情况下使用 Laravel 我计划使用 Blade 和 VueJS 创建一个前端网站 该网站将使用第三方 API 并且不需要数据库 目前 我收到此错误 但不知道如何绕过它 Database name se
  • 可以全屏打开程序的应用程序?

    我需要制作一个在全屏模式下启动新程序 例如记事本 的应用程序 我可以在 c 中做到这一点吗 我希望有一个代码示例 谢谢 您可以使用Process Start with a ProcessStartInfo对象有一个WindowStyle财产
  • 如何指定库路径的首选项?

    我正在使用以下命令编译 C 程序g and ld 我有一个 so我想在链接期间使用的库 然而 同名的库存在于 usr local lib and ld正在选择该库而不是我直接指定的库 我怎样才能解决这个问题 对于下面的示例 我的库文件是 m
  • 如何让 Jersey 对响应消息正文使用 GZip 压缩

    我正在尝试编写一个简单的 Jersey 应用程序 它将文件从 Jersey 客户端发送到 Jersey 服务器并返回 但是 这些文件似乎仅在从客户端到服务器的途中进行编码 而不是在其他方式上进行编码 我想知道如何改变这种行为 我正在一个简单
  • 如何将docker容器中的目录挂载到主机上?

    在 docker 容器中挂载主机目录非常容易 但我需要相反的方式 我使用 docker 容器作为开发 WordPress 插件的开发环境 这个 docker 容器包含运行 WordPress 所需的一切 MySQL Apache PHP 和
  • 将数组值转换为对象键

    我做了一个 get 返回一个 json 对象 如下所示 data 2016 Pass Fail Rates by Test Centre Passes No ID Fails Fail Dangerous Total Sometown 8
  • 使用超类类型作为子类实例

    我知道这个问题已经被问了很多次 但在我看来 通常的答案远不能令人满意 给定以下类层次结构 class SuperClass class SubClass extends SuperClass 为什么人们使用这种模式来实例化子类 SuperC
  • android studio设置java版本1.7

    我正在尝试将 java 版本 1 7 与 android studio 一起使用 但不幸的是它无法正常工作 如果将版本设置为File gt Other settings gt Default project structure to Pro
  • 如何在 Cucumber Java 的步骤之间传递变量值?

    我有一个变量 我想在所有步骤中传递该变量 任何人都可以使用代码片段示例来建议如何在步骤之间传递变量值 任何帮助将不胜感激 在 Cucumber for Java cucumber jvm 中 在步骤之间共享数据的预期方式是使用依赖项集成 D
  • 在其自己的成员函数中构造类时,如何强制类模板参数推导?

    考虑以下代码 struct A template