c++可变参数完美转发

编程入门 行业动态 更新时间:2024-10-26 17:18:25

c++可变<a href=https://www.elefans.com/category/jswz/34/1771441.html style=参数完美转发"/>

c++可变参数完美转发

c++语法真的怪异

看线程源码的时候看到一段

template<class _Fn,class... _Args>explicit thread(_Fn&& _Fx, _Args&&... _Ax){	// construct with _Fx(_Ax...)_Launch(&_Thr,_STD bind(_Decay_copy(_STD forward<_Fn>(_Fx)),_Decay_copy(_STD forward<_Args>(_Ax))...));//后面三个...是干嘛的?难道这个方法的返回值是可变参数然后传递给
_Decay_copy()?
}

一直看不懂什么意思.....原来就是一个完美转发的包装模板,返回值其实就是可变参数,自己写了代码测试了下。

#include <iostream>using namespace std;
template<typename T>
void printarg(T t)
{cout << t ;
}
template<typename ...Ts>
void go(Ts...agv){gogo(forward<Ts>(agv)...);  // go->gogo 可变参数转发需要...}
template<typename ...Ts>
void gogo(Ts...agvs){int arr[] = { (printarg(agvs), 0)... }; //->printarg返回值赋给0,0=返回值,最后值再进入数组;
}int main()
{int a = 0;go(1,2,3,4);//go把可变参数转发给gogo 然后gogo调用printarg()输出1,2,3,4getchar();
//	forward<int >(a);}

更多推荐

c++可变参数完美转发

本文发布于:2024-03-08 13:02:09,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1720950.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:参数   完美

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!