std::invoke_result是C++17中的一个模板类,可以用来获取调用特定函数对象或函数指针后的返回值类型。它接受一个可调用对象类型和参数类型作为模板参数,并提供一个嵌套成员类型,表示调用该可调用对象后的返回值类型。
使用std::invoke_result可以方便地获取函数对象或函数指针的返回值类型,无需手动推断或指定返回值类型。这在编写模板代码时非常有用,因为可以避免重复编写相同的返回值类型推断逻辑。
例如,假设有一个函数对象foo,可以通过以下方式获取它的返回值类型:
#include
#include
struct foo {
int operator()(int x) {
return x * 2;
}
};
int main() {
std::invoke_result::type result;
std::cout << typeid(result).name() << std::endl; // 输出int
return 0;
}
在这个例子中,std::invoke_result