使用模板化构造函数的非模板化类的实例解释为函数定义?

2023-11-30

以下代码最好地说明了我的问题:

#include <fstream>
#include <iterator>

class Bar
{
    public: template <class Iterator> Bar(Iterator first, Iterator last) {}
};

void foo(const Bar& bar) { }

int main(int argc, char** argv)
{
    std::ifstream file("file.txt");

    Bar bar(std::istream_iterator<char>(file), std::istream_iterator<char>());

    foo(bar); // error C2664: 'foo' : cannot convert parameter 1 from 'Bar (__cdecl *)(std::istream_iterator<_Ty>,std::istream_iterator<_Ty> (__cdecl *)(void))' to 'const Bar &'
              // with
              // [
              //     _Ty=char
              // ]
              // Reason: cannot convert from 'overloaded-function' to 'const Bar'
              // No constructor could take the source type, or constructor overload resolution was ambiguous

    return 0;
};

下面是一些类似的实例bar不会引起同样的歧义:

Bar bar = Bar(std::istream_iterator<char>(file), std::istream_iterator<char>());

and

std::istream_iterator<char> start(file);
std::istream_iterator<char> end;
Bar bar(start, end);

我的问题是,第一个声明是什么?bar这会导致它被误解吗?

注意:我正在使用 Visual Studio 2010 (10.0.30319.1) 进行测试


ArunMu 获得部分功劳,这确实是一个例子最令人烦恼的解析,但该术语是在 Meyer 的《Effective STL》(第 1 章第 6 项)中创造的,而不是在 Exceptional C++ 中创造的。

It is被解释为函数指针((__cdecl *)错误的一部分是完全泄露的),显然 C++ 标准要求它以这种方式解释。有人有这方面的章节/诗句引用吗?

还有另一种解决方案可以提供消歧作用。在每个参数周围添加一组附加括号也有效:

Bar bar( (std::istream_iterator<char>(file)), (std::istream_iterator<char>()) );

还值得指出的是,正如我最初所想的那样,该问题与模板无关。

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

使用模板化构造函数的非模板化类的实例解释为函数定义? 的相关文章

  • 与 for_each 或 std::transform 一起使用时,如何调用 C++ 函子构造函数

    我以前从未使用过 C 函子 所以我只是想了解它们是如何工作的 例如假设我们有这个函子类 class MultiplyBy private int factor public MultiplyBy int x factor x int ope
  • 格式说明符%02x

    我有一个简单的程序 include
  • 静态构造函数和 BeforeFieldInit?

    如果类型没有静态构造函数 则将执行字段初始值设定项 就在使用该类型之前 或者在某个时间点突发奇想 运行时 为什么这段代码 void Main start Dump Test EchoAndReturn Hello end Dump clas
  • 关于逻辑/算法的想法以及如何防止线程写入 Sql Server 中的竞争

    我有以下逻辑 public void InQueueTable DataTable Table int incomingRows Table Rows Count if incomingRows gt RowsThreshold async
  • EntityHydrate 任务失败

    我最近安装了 Visual Studio 11 Beta 和 Visual Studio 2010 之后 我无法在 Visual Studio 2010 中构建依赖于 PostSharp 的项目 因此我卸载了 Visual Studio 1
  • strlen() 编译时优化

    前几天我发现你可以找到编译时strlen使用这样的东西 template
  • 使用 C# 和 ASP.NET 在电子邮件附件中发送 SQL 报告

    我正在尝试使用 ASP NET 和 C 从 sql reportserver 2008 作为电子邮件附件发送报告 到目前为止我学会了如何获取 PDF 格式的报告 http weblogs asp net srkirkland archive
  • MVC 5 中具有 ASP.NET Identity 的 Autofac 不会验证 OWIN 管道中的安全标记

    我在 MVC 5 中设置了 AutoFac 来与 ASP NET Identity 一起使用 表面上一切似乎都工作正常 即用户可以创建帐户并登录 但后来我发现 当安全标记更改时 用户不会注销 通过在 AspNetUsers 表中进行暴力破解
  • 用于在标头更改时重新编译的简单 C 项目的示例 makefile

    有谁有完整的 makefile 可以执行以下操作 如果 HEADER 文件发生更改 则重建项目 cpp 文件在 makefile 中列出 头文件未在 makefile 中列出 头文件允许与 cpp 文件具有不同的名称 部分cpp文件没有头文
  • C# 根据当前日期传递日期时间值

    我正在尝试根据 sql server 中的两个日期获取记录 Select from table where CreatedDate between StartDate and EndDate我通过了5 12 2010 and 5 12 20
  • Unity手游触摸动作不扎实

    我的代码中有一种 错误 我只是找不到它发生的原因以及如何修复它 我是统一的初学者 甚至是统一的手机游戏的初学者 我使用触摸让玩家从一侧移动到另一侧 但问题是我希望玩家在手指从一侧滑动到另一侧时能够平滑移动 但我的代码还会将玩家移动到您点击的
  • 条件类型定义

    如果我有一小段这样的代码 template
  • Unity c# 四元数:将 y 轴与 z 轴交换

    我需要旋转一个对象以相对于现实世界进行精确旋转 因此调用Input gyro attitude返回表示设备位置的四元数 另一方面 这迫使我根据这个四元数作为默认旋转来计算每个旋转 将某些对象设置为朝上的简单方法如下 Vector3 up I
  • 让网络摄像头在 OpenCV 中工作

    我正在尝试让我的网络摄像头在 Windows 7 64 位中的 OpenCV 版本 2 2 中捕获视频 但是 我遇到了一些困难 OpenCV 附带的示例二进制文件都无法检测到我的网络摄像头 最近我发现这篇文章表明答案在于重新编译一个文件 o
  • SQLAPI++ 的免费替代品? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 是否有任何免费 也许是开源 的替代品SQLAPI http www sqlapi com 这个库看起来
  • winform c# 中的弹出窗口

    我正在开发一个需要弹出窗口的项目 但问题是我还希望能够通过表单设计器在此弹出窗口中添加文本框等 所以基本上我有一个按钮 当您单击它时 它将打开我在表单设计器中设计的另一个窗口 我一直在谷歌搜索 但还没有找到我需要的东西 所以我希望你们能帮助
  • .Net Reactive Extensions Framework (Rx) 是否考虑拓扑顺序?

    Net 反应式扩展框架是否按拓扑顺序传播通知以最大限度地减少更新量 就像 Scala Rx 所做的那样 Net 反应式扩展 Rx 是否可以 https github com lihaoyi scala rx wiki How it Work
  • 声明一个负长度的数组

    当创建负长度数组时 C 中会发生什么 例如 int n 35 int testArray n for int i 0 i lt 10 i testArray i i 1 这段代码将编译 并且启用 Wall 时不会出现警告 并且似乎您可以分配
  • ContentDialog Windows 10 Mobile XAML - 全屏 - 填充

    我在项目中放置了一个 ContentDialog 用于 Windows 10 上的登录弹出窗口 当我在移动设备上运行此项目时 ContentDialog 未全屏显示 并且该元素周围有最小的填充 在键盘上可见 例如在焦点元素文本框上 键盘和内
  • 如何在 ASP.NET Core 中注入泛型的依赖关系

    我有以下存储库类 public class TestRepository Repository

随机推荐

  • 如何使用android.drm框架

    我正在开发一个基于 DRM 的 Android 应用程序 应用程序旨在在下载并获得对文件 音频 视频 的控制访问权限后对 音频 视频 文件进行加密 防止文件 音频 视频 复制和粘贴并使文档过期 从而无法再查看它们 为此我使用 android
  • ASP.NET 计时器事件

    protected void SubmitButtonClicked object sender EventArgs e System Timers Timer timer new System Timers Timer line 1 ge
  • JUnit 如何查找测试?

    我假设 JUnit 找到了测试 在派生自的类中 junit framework TestCase 通过寻找带有注释的方法 Test 但是 我已经包含了一个测试http 256stuff com sources jenkins hash ja
  • 如何根据列名称对数据框进行子集化?

    我有这个数据框 dput df structure list Server structure c 1L 1L 1L 1L 1L 1L Label servera class factor Date structure 1 6 Label
  • 创建位图图像 WPF

    我有一个包含需要在屏幕上显示的图像数据的 ushort 目前我正在创建一个 Windows System Drawing Bitmap 并将其转换为 BitmapImage 但这感觉像是一种缓慢而无效的方法 有人知道创建 ushort 的
  • facet_wrap 每个面板的轴相等

    我想用facet wrap每个面板的轴可能不同 但在一个面板内x and y轴应该具有相同的比例 例如看下面的图 df lt read table text x y g 1 5 a 2 6 a 3 7 a 4 8 a 5 9 b 6 10
  • Access - 比较两个表并更新或插入第一个表中的数据

    在我的 Access 数据库中 我有两个表 Table1 PersNum Name Surname 2321 Lenora Springer 2320 Donya Gugino 3326 Leland Wittmer 4588 Elmer
  • 如何使用QML/QtLocation模块在地图上显示大量离线数据?

    我正在使用 QML 及其新的 QtLocation 模块 gt Qt5 4 创建离线 Slippy Map 我很容易地用离线缓存来显示图块 现在我想向此地图添加自定义数据 约 7000 个机场的列表 这个巨大的列表必须根据缩放级别进行聚类
  • 当控制器实例化 Web API DI 中接口的正确实现时,“魔法”发生在哪里?

    在我看来 当涉及到 Web API 控制器中的 DI 时 就像是从帽子里变出兔子一样 我明白了 0 Web API项目中的Controller可以通过各种需要实例化的类来调用 所有的类都实现了Controller所依赖的接口 例如 使用以下
  • 选中的复选框将在分页中保留

    我正在做一个 php 脚本 其中我需要记住选中的复选框并将其保存到所有数据库中 不幸的是 我的代码仅保存我选中复选框的当前页面 但另一个复选框未选中 示例 在第 1 页中 我检查了 3 个项目 在第二页上 我检查了项目 当我单击提交按钮时
  • 将地理坐标从度数转换为十进制

    我想将我的地理坐标从度数转换为小数 我的数据如下 lat long 105252 30 25 264 9 01 331 105253 30 39 237 8 10 811 105255 31 37 760 8 06 040 105258 3
  • Ruby gets() 未返回正确的字符串[重复]

    这个问题在这里已经有答案了 在听到 Ruby 的所有优点后 我今天决定尝试一下 Ruby 但到目前为止 它只是给我带来了困难 很久以前 我在学习 Python 时制作了一个 搜索引擎 它只是将数据存储在数组中并检查搜索关键字是否在其中 并且
  • Flask App:函数运行时更新进度条

    我正在 Flask 中构建一个相当简单的 Web 应用程序 它通过网站的 API 执行功能 我的用户使用他们的帐户 URL 和 API 令牌填写表单 当他们提交表单时 我有一个 python 脚本 可以通过 API 从他们的帐户导出 PDF
  • 在数组中的每个元素之间使用 MATLAB linspace

    使用 MATLAB 我想在数组中的每个点之间进行线性插值 Using interpolate将以非线性方式完成 我想做的类似于生成低通滤波器系数 我已经想出了一个解决方案 但我想避免使用for loops a 0 0 1 0 0 Input
  • 身份验证后,flask-login 会随机使会话失效

    我正在使用烧瓶登录https flask login readthedocs io en latest用于会话管理 用户首先登录 login html 应用程序并转到 home html 但是 当用户通过身份验证并单击不同的链接后 它将踢出
  • 如何在字符串数组中搜索字符串

    在其他帖子中寻找答案后 我觉得我必须问这个问题 我在看JavaScript 中如何检查数组是否包含对象 and 查找某个项目是否在 JavaScript 数组中的最佳方法 并且无法让代码在那里工作 我正在将 html 嵌入代码捕获到数组中
  • WPF 控件嵌套属性数据绑定

    我正在尝试使用一些嵌套属性来开发用户控件 这些属性允许使用数据绑定来设置它 例如 我有这样的事情 Top level control public class MyControl Control public string TopLevel
  • Cocoa Touch 中的代表与事件

    我正在编写我的第一个 iPhone 应用程序 并且一直在探索 Cocoa Touch 和 Objective C 中的设计模式 我有客户端 Web 开发背景 因此我正在努力了解代表 具体来说 我不明白为什么需要委托对象而不是事件处理程序 例
  • 将项目重新排列到数组中,彼此之间没有相似的项目

    假设我有一个块的集合 12 个是红色 8 个是蓝色 5 个是黄色 1 个是绿色 我需要创建一个算法 将这些对象输出到单个数组中 没有红色块彼此相邻 没有蓝色块彼此相邻 等等 输出应如下所示 红 蓝 红 蓝 红 蓝 黄 蓝 绿 红 黄等 到目
  • 使用模板化构造函数的非模板化类的实例解释为函数定义?

    以下代码最好地说明了我的问题 include