C/C++ 知识点:result_of 模版类

张开发
2026/4/16 4:31:32 15 分钟阅读

分享文章

C/C++ 知识点:result_of 模版类
文章目录一、result_of 模版类1、基本语法前言C中的result_of是一个模板类用于在编译时推断函数调用或函数对象的返回类型。它位于type_traits头文件中是C标准库中的一部分。result_of的主要用途是在编写泛型代码时当需要知道某个函数或函数对象在给定参数类型的返回类型时可以使用result_of来获取该信息。一、result_of 模版类1、基本语法std::result_of是一个模板类它接受一个函数类型或可调用对象的类型和一个参数类型包作为模板参数。它的::type成员是一个类型别名表示当给定类型的函数用给定类型的参数调用时将返回的类型。下面是一个简单的例子来说明std::result_of的用法#includeiostream#includetype_traitsintadd(inta,intb){returnab;}intmain(){// 使用result_of获取add函数的返回类型typedefstd::result_ofdecltype(add)(int,int)::type ReturnType;// 检查ReturnType是否为intstatic_assert(std::is_sameReturnType,int::value,ReturnType should be int);// 使用result_of获取的返回类型创建一个变量ReturnType resultadd(3,4);std::coutThe result is: resultstd::endl;return0;}需要注意的是从C17开始result_of已被std::invoke_result所取代后者提供了更多的功能和更好的可读性。因此在编写新的C代码时建议使用std::invoke_result而不是result_of。

更多文章