如何解释这个C类型?

如何解释这个C类型?,第1张

概述今天我正在帮助跟踪不正确的代码片段(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编译 今天我正在帮助跟踪不正确的代码片段(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 *).如何解释这种类型?

@R_502_6120@
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只是以不同的方式解释它.

总结

以上是内存溢出为你收集整理的如何解释这个C类型?全部内容,希望文章能够帮你解决如何解释这个C类型?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1235168.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存