模板类型推导参考

2024-05-26

我一直在使用具有以下形式代码的模板来进行类型推导/打印:

#include <iostream>
template <typename T>
class printType {};

template <typename T>
std::ostream& operator<<(std::ostream& os, const printType<T>&)
{
    os << "SomeType"; return os;
}  

template <typename T>
std::ostream& operator<<(std::ostream& os, const printType<T*>&)
{
    os << printType<T>() << "*"; return os;
}  

template <typename T>
std::ostream& operator<<(std::ostream& os, const printType<T&>&)
{
    os << printType<T>() << "&"; return os;
}  
// etc... and can call on a variable through

template <typename T>
printType<T> print(T) { return printType<T>(); }  

int main()
{
    int a = 7;
    int *p = &a;
    int &r = a;

    //OK: return SomeType*
    std::cout << "type of p: " << print(p) << std::endl;
    //Hmmmm: returns SomeType <- (no &: can I get around this?)
    std::cout << "type of r: " << print(r) << std::endl;
}

我想知道是否能让最后一行返回int&,即:
(i) 让函数模板 print 将其参数的类型推导为int&或者以某种方式计算出它应该返回一个printType<T&>当我经过它时;或者
(ii) 由于变量传递给函数的方式,这是否是不可避免的。

有没有办法通过改变打印形式或使用其他模板技巧来解决这个问题?如果存在解决方案,我更喜欢非 C++0x,但总是很高兴看到将来有哪些捷径(如果还没有)可用。


没有办法解决这个问题。一种表达p, where p命名引用,始终具有引用所引用的类型。没有任何表达式具有类型T&。因此您无法检测表达式是否源自引用。

这也不能用 C++0x 来完成。 C++ 的一个深刻原则是不存在具有引用类型的表达式。你can write decltype(r)得到什么的类型r名称而不是表达式的类型r有。但你将无法写print(r), 除非print当然是一个宏,但我不明白为什么你会走那条可怕的路。

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

模板类型推导参考 的相关文章

  • 以文化中立的方式将字符串拆分为单词

    我提出了下面的方法 旨在将可变长度的文本拆分为单词数组 以进行进一步的全文索引处理 删除停止词 然后进行词干分析 结果似乎不错 但我想听听关于这种实现对于不同语言的文本的可靠性的意见 您会建议使用正则表达式来代替吗 请注意 我选择不使用 S
  • WCF RIA 服务 - 加载多个实体

    我正在寻找一种模式来解决以下问题 我认为这很常见 我正在使用 WCF RIA 服务在初始加载时将多个实体返回给客户端 我希望两个实体异步加载 以免锁定 UI 并且我想利用 RIA 服务来执行此操作 我的解决方案如下 似乎有效 这种方法会遇到
  • GLKit的GLKMatrix“列专业”如何?

    前提A 当谈论线性存储器中的 列主 矩阵时 列被一个接一个地指定 使得存储器中的前 4 个条目对应于矩阵中的第一列 另一方面 行主 矩阵被理解为依次指定行 以便内存中的前 4 个条目指定矩阵的第一行 A GLKMatrix4看起来像这样 u
  • 不支持将数据直接绑定到存储查询(DbSet、DbQuery、DbSqlQuery)

    正在编码视觉工作室2012并使用实体模型作为我的数据层 但是 当页面尝试加载时 上面提到的标题 我使用 Linq 语句的下拉控件往往会引发未处理的异常 下面是我的代码 using AdventureWorksEntities dw new
  • 用于检查类是否具有运算符/成员的 C++ 类型特征[重复]

    这个问题在这里已经有答案了 可能的重复 是否可以编写一个 C 模板来检查函数是否存在 https stackoverflow com questions 257288 is it possible to write a c template
  • OleDbDataAdapter 未填充所有行

    嘿 我正在使用 DataAdapter 读取 Excel 文件并用该数据填充数据表 这是我的查询和连接字符串 private string Query SELECT FROM Sheet1 private string ConnectStr
  • 如何从 appsettings.json 文件中的对象数组读取值

    我的 appsettings json 文件 StudentBirthdays Anne 01 11 2000 Peter 29 07 2001 Jane 15 10 2001 John Not Mentioned 我有一个单独的配置类 p
  • 重载<<的返回值

    include
  • WCF 中 SOAP 消息的数字签名

    我在 4 0 中有一个 WCF 服务 我需要向 SOAP 响应添加数字签名 我不太确定实际上应该如何完成 我相信响应应该类似于下面的链接中显示的内容 https spaces internet2 edu display ISWG Signe
  • 使用 Bearer Token 访问 IdentityServer4 上受保护的 API

    我试图寻找此问题的解决方案 但尚未找到正确的搜索文本 我的问题是 如何配置我的 IdentityServer 以便它也可以接受 授权带有 BearerTokens 的 Api 请求 我已经配置并运行了 IdentityServer4 我还在
  • 如何设计以 char* 指针作为类成员变量的类?

    首先我想介绍一下我的情况 我写了一些类 将 char 指针作为私有类成员 而且这个项目有 GUI 所以当单击按钮时 某些函数可能会执行多次 这些类是设计的单班在项目中 但是其中的某些函数可以执行多次 然后我发现我的项目存在内存泄漏 所以我想
  • 这些作业之间是否存在顺序点?

    以下代码中的两个赋值之间是否存在序列点 f f x 1 1 x 2 不 没有 在这种情况下 标准确实是含糊不清的 如果你想确认这一点 gcc 有这个非常酷的选项 Wsequence point在这种情况下 它会警告您该操作可能未定义
  • 覆盖子类中的字段或属性

    我有一个抽象基类 我想声明一个字段或属性 该字段或属性在从该父类继承的每个类中具有不同的值 我想在基类中定义它 以便我可以在基类方法中引用它 例如覆盖 ToString 来表示 此对象的类型为 property field 我有三种方法可以
  • 为什么编译时浮点计算可能不会得到与运行时计算相同的结果?

    In the speaker mentioned Compile time floating point calculations might not have the same results as runtime calculation
  • 如何将带有 IP 地址的连接字符串放入 web.config 文件中?

    我们当前在 web config 文件中使用以下连接字符串 add name DBConnectionString connectionString Data Source ourServer Initial Catalog ourDB P
  • 基于 OpenCV 边缘的物体检测 C++

    我有一个应用程序 我必须检测场景中某些项目的存在 这些项目可以旋转并稍微缩放 更大或更小 我尝试过使用关键点检测器 但它们不够快且不够准确 因此 我决定首先使用 Canny 或更快的边缘检测算法 检测模板和搜索区域中的边缘 然后匹配边缘以查
  • C# 模拟VolumeMute按下

    我得到以下代码来模拟音量静音按键 DllImport coredll dll SetLastError true static extern void keybd event byte bVk byte bScan int dwFlags
  • Windows 和 Linux 上的线程

    我在互联网上看到过在 Windows 上使用 C 制作多线程应用程序的教程 以及在 Linux 上执行相同操作的其他教程 但不能同时用于两者 是否存在即使在 Linux 或 Windows 上编译也能工作的函数 您需要使用一个包含两者的实现
  • 使用.NET技术录制屏幕视频[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 有没有一种方法可以使用 NET 技术来录制屏幕 无论是桌面还是窗口 我的目标是免费的 我喜欢小型 低
  • 对来自流读取器的过滤数据执行小计

    编辑问题未得到解答 我有一个基于 1 个标准的过滤输出 前 3 个数字是 110 210 或 310 给出 3 个不同的组 从流阅读器控制台 问题已编辑 因为第一个答案是我给出的具体示例的字面解决方案 我使用的实际字符串长度为 450 个

随机推荐

  • for循环增量语句中的奇数位运算符[重复]

    这个问题在这里已经有答案了 鉴于这个 for 循环 for i i lt MAX N i i i 它是什么意思 声明的内容是什么i i i完成 这种循环经常在二叉索引树 或 BIT 实现中观察到 这对于在对数时间内更新范围或点以及查询范围或
  • 创建 MySQL 用户时使用 % 表示主机

    我的 MySQL 数据库需要两个用户 appuser 和 support 一位应用程序开发人员坚持要求我为这些用户创建四个帐户 appuser appuser localhost support support localhost 我一生都
  • 在 ionic cordova 构建 android 时出现错误

    刚开始学习 ionic 3 出现以下错误ionic cordova build android node 6364 UnhandledPromiseRejectionWarning Unhandled promise rejection r
  • 基于UnixTime的MySQL动态分区

    我的数据库设计包括多个 MYISAM 表 其中包含在线收集的测量值 每行记录包含自动递增的 id 一些数据和一个表示 unixtime 的整数 我正在设计一种老化机制 并且我有兴趣使用MySQL分区来基于unixtime动态地对每个这样的表
  • 优化查找所有实现 IInterface 的类以及使用特定类型显式实现它的类

    我定义了一个接口 ISerializeDeserialize 和一些继承通用接口的类 我还有一些使用 CodeDomProvider 生成代码的程序集 它生成从同一接口继承的类 但使用特定类型实现它 我想要实现的是获取通用实现和实现特定类型
  • 如何将flex和bison与Qt项目集成?

    我正在 git 源代码控制下使用 Qt4 制作 GUI 程序 Github页面 https github com vinayak garg dic sim 项目的一小部分需要扫描和解析 所以我想在项目中使用flex和bison 我能想到3种
  • 在 Mule 3.4 中模拟 while 循环

    我需要在 Mule Flow 中使用 while 循环来从自定义 DAO 中加载数据块 我使用表达式转换器来访问 DAO 直到他不再提供任何项目 我不知道 DAO 提供的项目总量 Mule 3 4 中没有内置 while 循环 我的第一个想
  • Haskell Fibonacci 达到最大指定数?

    我有一个已启动并正在运行的 Haskell 函数 但它做错了事情 它应该输出最多指定最大数量的斐波那契数列 像这样 fibonacciSequence 86 1 1 2 3 5 8 13 21 33 54 我的代码当前输出斐波那契数列中的前
  • YQL:不再支持 html 表

    我使用 YQL 获取一些 html 页面以从中读取信息 从今天起我收到返回消息 不再支持 html 表 请参阅https policies yahoo com us en yahoo terms product atos yql index
  • 如何使用线程使 Windows 服务长期运行

    我有一个 win 服务托管一些我需要保持长时间运行的工作流程 一个 WorkflowApplication 和一个 WorkflowServiceHost 因为 OnStart 要求它完成并返回操作系统 所以我有一个在线程池中的另一个线程上
  • 西班牙语单词的正则表达式是什么?

    正则表达式语言使用 B 来包含 A Z a z 0 9 和 并且 b 被定义为单词边界 如何编写匹配所有有效西班牙语单词 包括诸如 等字符 的正则表达式 我正在使用 NET 使用西班牙语区域设置并使您的正则表达式区域设置敏感
  • Nginx - 特定位置的另一个根

    我在下面有一些静态 html 文件 var www project1 该项目的 Nginx 配置是 server name www project1 com project1 com root var www project1 locati
  • dc js 复合条形图 折线图

    我有一个 dc js 条形图 如下所示这个叉形小提琴 http jsfiddle net 89218vf1 3 此条形图将加载预定义的过滤器 例如本例中的 25 35 现在 我需要显示一个与条形图复合的折线图 突出显示带有高低线的过滤数据
  • 对于 aws s3,预检响应无效(重定向)

    我正在尝试将图像上传到我的 Amazon S3 存储桶 但即使我已经正确设置了 CORS 配置 我仍然收到此 CORS 错误 这是我的 CORS 配置
  • 如何用线条在一个Excel散点图中绘制多个分组数据

    我在 Excel 中的一张图表 带线的散点图 中绘制分组数据 按索引 时遇到一些困难 我将非常感谢您的帮助 我的数据分为三列 第一列是数据或组的索引 即每组数据的唯一编号 第二列是时间 第三列是数据 Group Time Data 1 1
  • Phonegap Cordova Statusbar 插件创建双栏

    我正在开发一个使用phonegap 的应用程序 通过 CLI 构建 而不是 PhoneGap 构建 我的 cordova plugin statusbar 插件有问题 打开时它将增加额外的条高度 这是它的样子 双高菜单栏 我通过两种方式实现
  • 如果外部程序挂起,如何退出进程 (.exec())

    让我解释一下我的软件 我的软件所做的只是创建 10 个线程 并为每个线程分配许多任务 然后 每个线程创建一个运行时进程 该进程将启动一个 cmd 批处理文件 该文件又将启动一个程序 该程序将远程登录到设备 我有大约 200 个设备 以轮询其
  • 我对 C# 接口成员的默认访问修饰符感到困惑[重复]

    这个问题在这里已经有答案了 什么是访问修饰符interface方法 它应该是public or protected因为当你实现它们时你可以访问它们 这是有道理的 也应该是abstract因为他们没有实施 但最近我在读一本书 名叫通过 C 进
  • “你好,TensorFlow!”使用 C API

    出于学习目的 如何使用 TensorFlow C API 编写此 Python 示例 import tensorflow as tf hello tf constant hello TensorFlow sess tf Session pr
  • 模板类型推导参考

    我一直在使用具有以下形式代码的模板来进行类型推导 打印 include