如何解释这个C类型?

前端之家收集整理的这篇文章主要介绍了如何解释这个C类型?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
今天我正在帮助跟踪不正确的代码片段(func是用int param声明的,但int *作为第二个param传递给std :: thread构造函数):
#include <thread>

void func(int);
int* ptr;

void start()
{
    std::thread t = std::thread(func,ptr);
}

当我尝试使用gcc 5.3.0编译它时,它打印了以下类型的错误消息:

class std::result_of<void (*(int*))(int)>

现在我想知道如何将作为参数传递的类型解释为类std :: result_of<>.它类似于指向函数的指针(在本例中为void(*)(int)),但在括号中的星号之后使用extra(int *).如何解释这种类型?

解决方法

void (*(int*))(int)

方法是:

一个函数,它接受int *类型的单个参数作为返回

指向函数的指针,该函数接受int类型的单个参数并返回

空虚

它类似于C/C++标准库函数signal

void (*signal(int sig,void (*func)(int)))(int);

它返回一个指向前一个信号处理程序的指针(与func参数的类型相同).

编辑:作为Pete Becker pointed out in comment,当与std :: result_of一起使用时,它是means something different,但表达式本身的类型仍然是我描述的类型,std :: result_of只是以不同的方式解释它.

原文链接:https://www.f2er.com/c/116451.html

猜你在找的C&C++相关文章