decltype

szn_409 2016-04-06 09:44:27
void fun1();
decltype(&fun1) fun();

如上:为什么decltype(&fun1) fun(); 等价于void (*fun)()而不是void * (fun)()
...全文
93 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
paschen 版主 2016-04-07
  • 打赏
  • 举报
回复
void (*fun())(); 表示的是声明一个函数指针fun,可指向无参数也无返回的函数 decltype(&fun1) fun(); 是在声明一个函数,这个函数没有参数,返回类型为decltype(&fun1)的结果 decltype(fun1)* fun(); 也是在声明一个函数,返回类型为decltype(&fun1)*的结果 不是函数指针
szn_409 2016-04-07
  • 打赏
  • 举报
回复
引用 1 楼 paschen 的回复:
void * (fun)() 返回值是void* void (*fun)() 才是函数指针
上次回复有问题,应该是如下: void (*fun())(); 为什么函数fun必须要返回一个值呢,它的返回类型是什么? void fun1(); decltype(&fun1) fun(); decltype(fun1)* fun(); 上述2种声明中 fun()都是函数指针吧?
szn_409 2016-04-07
  • 打赏
  • 举报
回复
引用 1 楼 paschen 的回复:
void * (fun)() 返回值是void* void (*fun)() 才是函数指针
void (*fun)(); 为什么函数fun必须要返回一个值呢,它的返回类型是什么? void fun1(); decltype(&fun1) fun(); decltype(fun1)* fun(); 上述2种声明中 fun()都是函数指针吧?
ri_aje 2016-04-07
  • 打赏
  • 举报
回复
& 得到的是操作数的地址,一定是指针类型啊,重载 & 的类除外。
paschen 版主 2016-04-06
  • 打赏
  • 举报
回复
void * (fun)() 返回值是void* void (*fun)() 才是函数指针

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧