C++03中函数返回类型推导

2024-02-11

标签提出了问题,但尽管如此,请考虑以下几点:

template<typename F, typename A, typename R>
R call(F function, A arg) {
    return function(arg);
}

int foo(char) {
    return 5;
}

int main() {
    call(foo, 'a');
}

如果删除参数 R 并手动插入 int 作为返回类型,编译器会愉快地编译它。如图所示,编译器无法知道 R 的组成部分。

如何推断 C++03 中的函数返回类型?

我正在寻找不需要手动指定返回类型并且不需要对其他参数进行侵入性更改的方法。如果这是不可能的,那么我只是在寻找权威声明来验证这一点。


如果仅限于函数指针,则可以使用部分特化,例如

template<class T> struct func_ptr_result {};

template<class R>
struct func_ptr_result<R (*)()> {
    typedef R type; 
};

template<class R, class Arg1>
struct func_ptr_result<R (*)(Arg1)> {
    typedef R type; 
}; 

// etc for > 1 arguments

template<typename F, typename A>
typename func_ptr_result<F>::type call(F function, A arg) {
    return function(arg);
}

在更一般的情况下(任意函子),如果没有编译器支持或类型的合作,这是不可能的。

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

C++03中函数返回类型推导 的相关文章

  • 元组在 VS2012 中如何工作?

    Visual Studio 2012 功能 tuples但不是可变参数模板 这是如何完成的 如何在不使用可变模板的情况下实现元组 简而言之 微软做了与之前在 NET 中实现类似元组的数据类型完全相同的事情 创建许多版本 每个版本都有固定数量
  • 是否可以从 C++ 应用程序调用 C# 应用程序?

    我是一名编程学生 现在我已经上了两门 C 课程 这个学期我将参加我的第一门 C 课程 出于好奇 是否可以从 C 应用程序调用 C 应用程序 如果是的话 是否还可以检查运行该程序的计算机是否具有 NET框架 我只是很好奇 我想如果可能的话 这
  • 我如何知道 C 程序的可执行文件是在前台还是后台运行?

    在我的 C 程序中 我想知道我的可执行文件是否像这样在前台运行 a out 或者像这样 a out 如果你是前台工作 getpgrp tcgetpgrp STDOUT FILENO or STDIN FILENO or STDERR FIL
  • 叮当错误?命名空间模板类的朋友

    以下代码在 clang 下无法编译 但在 gcc 和 VS 下可以编译 template
  • 如何以编程方式播放 16 位 pcm 数组 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我有一个包含 16 位 pcm 值的短 数组 我希望能够在不添加任何标题 也不将任何文件保存到内存的情况下播放它 我知道我可能需要一个提供
  • 将下拉列表与字典绑定

    我将字典绑定到下拉列表 举例来说 我的字典中有以下项目 Test1 123 Test2 321 我希望下拉文本采用以下格式 Test1 Count 123 Test2 Count 321 我沿着以下路径走 但没有运气 MyDropDown
  • while循环中的变量初始化

    我有一个可以分块读取文件的函数 public static DataObject ReadNextFile 数据对象看起来像这样 public DataObject public string Category get set And ot
  • 静态类与类的实例

    我有一个静态类 用于访问我的公共属性 整个应用程序的全局属性 和我在应用程序运行期间使用的方法 例如 我在静态类中设置了一些属性 并且在应用程序运行时我可以从属性中获取值 但我可以使用单例模式创建非静态类并以相同的方式使用它 问题 对于我的
  • Xamarin - SignalR 挂在连接上

    我正在尝试将我的 Xamarin 应用程序连接到托管在 Azure 上的 SignalR 后端 我遇到的问题是每次我在 HubConnection 上调用 StartAsync 时 它都会挂起客户端并且请求永远不会完成 我尝试通过应用程序进
  • 时间:2019-03-17 标签:c++fstream并发访问

    如果从不同的进程 线程同时访问文件会发生什么 据我所知 没有锁定文件的标准方法 只有操作系统特定的功能 就我而言 文件将被经常读取而很少写入 现在如果A打开一个文件进行读取 ifstream 并开始读取块 和B打开相同的文件进行写入 ofs
  • Resharper:IEnumerable 的可能多重枚举

    我正在使用新的 Resharper 版本 6 在我的代码中的几个地方 它给一些文本加了下划线 并警告我可能存在IEnumerable 可能的多重枚举 我理解这意味着什么 并在适当的情况下采纳了建议 但在某些情况下 我不确定这实际上是一个大问
  • 如何在 C# 中获取 Json 数组?

    我有一个像这样的 Json 字符串 我想将它加载到 C 数组中 当我尝试这样做时 我收到异常 我的字符串 customerInformation customerId 123 CustomerName Age 39 Gender Male
  • C++ 到 C# 事件处理

    所以我有我的C WinForm 应用程序 我从中调用我的C CLI MFC dll图书馆 但也有一些events在我的 C 库上 甚至此事件也发生在该库的本机 非 CLI 部分 我需要从我的 C 应用程序调用一些代码 并获取一些有关此事件的
  • 如何使用 CSI.exe 脚本参数

    当你运行csi exe 安装了 Visual Studio 2015 update 2 您将得到以下语法 Microsoft R Visual C Interactive Compiler version 1 2 0 51106 Copyr
  • doxygen c++:记录由“using”声明公开的私有继承成员

    作为一个例子 我有以下课程 class A public void methodOne class B private A public Brief description using A methodOne 我还没有找到强制 doxyge
  • EnumDisplayDevices 与 WMI Win32_DesktopMonitor,如何检测活动监视器?

    对于我当前的 C 项目 我需要为在大量计算机上连接并处于活动状态的每个监视器检测一个唯一的字符串 研究指出了两种选择 使用 WMI 并查询 Win32 DesktopMonitor 以获取所有活动监视器 使用 PNPDeviceID 来唯一
  • C 中使用 getrandom 实现随机浮点数

    我试图生成一个介于 0 和 1 之间的随机浮点数 无论是在 0 1 还是 0 1 对我来说都不重要 网上关于此的每个问题似乎都涉及rand 呼叫 播种time NULL 但我希望能够每秒多次调用我的程序 并每次都获得不同的随机数 这引导我找
  • 在哪里可以下载没有 Visual Studio 2010 的 C# 4.0 编译器?

    我知道 CTP VS 2010 映像 但我可以只下载 NET Framework 4 0 和 C 编译器吗 AFAIK VS 2010 CTP 仅作为 VM 映像提供 我不相信 Microsoft 发布了 VS 的安装程序 其中一个绝对不适
  • 有没有办法直接在函数参数中格式化字符串而不是使用临时字符串?

    我有一个接受字符串 字符数组 作为参数的函数 void enterString char my string 当使用这个函数时 我经常发现自己想要输入格式化的字符串 我使用 sprintf 来做到这一点 然而 我每次都必须创建一个临时字符串
  • SQL Server“未找到网络路径”在不同环境中随机且不频繁地发生

    类似 如果不是同一个问题 随机遇到网络路径未找到异常 https stackoverflow com questions 38696448 network path not found exception encountered rando

随机推荐

  • 移动跨平台开发的限制[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 目前 我计划将 Java 桌面应用程序移植到 Android 平台 除了官方安卓软件开发工具包 http developer andr
  • 使用 C# 和 JScript 汇总表

    我用 C 编写了代码来总结以下值InvoiceTable并将这些汇总值移至GroupTable在 Abbyy FlexiCapture 中 该软件比较新 运行时没有显示任何错误 需要写两套代码 在科技领域 在事件处理程序中 InvoiceT
  • vuetify中关闭芯片时如何停止选择打开?

    对于来自 vuetify com 的示例 使用芯片自动完成 当我取消芯片时 如何让它不打开选择菜单 i tried click stop 但它不起作用 芯片上事件 Thanks 我发现如果你删除box来自你的支撑v autocomplete
  • .NET Core 中带参数的自定义 JsonConverter

    我编写了自己的 JsonConverter 使用 ASP Net Core 3 1 打算在我的 DTO 上使用它 在以前的版本中 Newtonsoft Json 您可以在自定义 JsonConverter 类上添加构造函数 并使用 Json
  • EntityFramework 类在更新后被删除?

    我更改了数据库模型 以便其中一个表外键接受空值 之后我去了我的 edmx文件并执行 从数据库更新模型 保存后 代表表的所有类文件都被自动删除 如果我恢复数据库中的更改并重新保存我的 edmx 类将重新出现 但我真的希望这个外键能够接受空值
  • 为什么所有Powershell输出没有写入txt文件

    我在 Powershell Core 中运行以下 Powershell 脚本 PS C gt Get ChildItem Recurse File Filter pbix Sort Object Property LastAccessTim
  • 上传到 S3 时 Lambda 函数超时

    我有一个用 python 编写的 lambda 函数 它在 mongodb 中执行一些操作 然后它应该将函数的 tmp 文件夹中的图片上传到 s3 上 该函数在上传步骤中不断超时 我将超时设置为 2 分钟 并且该函数具有 S3 和 vpc
  • 更改 jQuery UI 按钮大小?

    我一直在我的页面上使用 jQuery UI 按钮 但是我还没有找到解决这个看似简单问题的方法 我希望我的一些按钮比其他按钮小 这应该像将按钮文本的 CSS 设置为类似的内容一样简单 font 8em 然而 jQuery UI 获取你的 DO
  • SQL Server 2005的默认并发控制

    SQL Server 2005 的默认并发控制是什么 是乐观并发控制还是悲观并发控制 这个可以设置吗 感谢期待 悲观 似乎是 2005 年的默认设置 尽管可以根据需要激活快照隔离 在默认的悲观模型中 第一个写入者将阻止所有后续写入 作家 但
  • PreventDefault 不适用于焦点事件

    我正在尝试设计一种表单 如果它具有特定的类 则用户应该无法与任何输入进行交互 由于各种原因 我想避免使用 disabled 属性 我试图阻止焦点事件的默认设置 但它不起作用 我在最新版本的 Firefox Chrome 和 Android
  • TFS 签入成功后清除“评论”字段吗?

    在 Visual Studio 2013 中 是否可以让 TFS 在成功签入后自动清除 注释 字段 在 待更改 面板上 目前 我只是在每次签到后手动突出显示并删除评论字段文本 下面的例子 在我的签到中添加了评论 希望在成功签入后看到这一点
  • 不使用 ContentProvider 时使用 CursorLoader

    Android SDK 文档说startManagingCursor 方法已弃用 此方法已被弃用 使用新的 CursorLoader 类和 LoaderManager 代替 这也可以通过 Android 兼容包在旧平台上使用 此方法允许活动
  • 如何为 R 中使用 grid.arrange() 创建的每一列指定标题?

    有谁知道是否可以在使用 grid arrange 创建的图表的每一列上给出标题 我知道可以为每个图表提供总体标题和标题 但我只需要一个列标题 非常感谢 grid arrange c1b c2a c3d c2b c3a c2d c3b c1a
  • 使用 Laravel Envoy 部署到具有不同项目根的多个服务器

    使用 Laravel Envoy 部署到多个服务器时 如何指定每个服务器的项目根目录 文档中提供的示例假设项目根目录对于两台服务器来说是相同的路径 Assume web 1项目根目录为 var html www and web 2项目根目录
  • 如何使用自定义 Comparator 或 equals 方法查找 Set 差异?

    我想找到两者之间的区别Set
  • 任何设置了“Access-Control-Allow-Origin: *”标头的 jQuery 托管版本?

    我最近一直在使用 jQuery 遇到了一个问题 我无法将其包含在用户脚本中 因为 XmlHttpRequest 使用同源政策 http en wikipedia org wiki Same origin policy 经过进一步测试我发现大
  • 尝试生成 apk 时,android studio 中的 livedata$1.class 出现重复输入错误 [关闭]

    Closed 这个问题需要调试细节 help minimal reproducible example 目前不接受答案 我真的不知道是什么导致了这个错误以及如何解决它 我的所有依赖 implementation fileTree dir l
  • 如何展平嵌套模型? (keras函数式API)

    我使用 keras 模型功能 API 定义了一个简单的模型 它的一层是一个完全顺序的模型 所以我得到了一个嵌套的层结构 见下图 如何将这种嵌套层结构转换为平面层结构 使用脚本 而不是手动 What I have Layer type Out
  • 无法将资源加载为 XML 文件

    我已经使用 XNA 完成了我的项目 目前我正在尝试使用 Monogame 对其进行转换 我的问题是我无法加载 XML 文件 错误 Could not load Level asset as a non content file 我的代码 f
  • C++03中函数返回类型推导

    标签提出了问题 但尽管如此 请考虑以下几点 template