result_of 模板类和using的关系?

小陆zi 2019-10-07 03:07:18
1:第一段代码来自GitHub :https://github.com/progschj/ThreadPool/blob/master/ThreadPool.h
using return_type = typename std::result_of<F(Args...)(args...)>::type;

auto task = std::make_shared< std::packaged_task<return_type()> >(
std::bind(std::forward<F>(f),std::forward<ARGS>(args)...)
);

return_type作为类型,还是函数调用体?functor()
在std::packaged_task<return_type()> 中使用了”()“,在return_type后面为什么加()?这是什么意思,告诉编译器什么信息?

2:自己写了以个函数
struct type{
using type_ = int;
};

int main()
{
type::type_ a; --------- 1
type::type_(); ----------2
return 0;
}

上面代码 1 和 2 有什么区别吗?


谢谢

...全文
98 1 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
sdghchj 2019-10-08
  • 打赏
  • 举报
回复
1. return_type是类型(当然什么类型都可能,数组类型、函数类型……不重要),在模板参数里return_type()表示一种函数原型,也就是函数类型,即返回类型为return_type且没有参数的函数。 比如 int fun()函数的类型就是int(). 2. 代码1是声明了int类型的就是a,未赋初值。代码2是定义一个int类型的匿名量,小括号表示默认初始化,值为0.

65,186

社区成员

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

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