码迷,mamicode.com
首页 > 其他好文 > 详细

关于可变参数varargs

时间:2019-05-03 09:20:56      阅读:126      评论:0      收藏:0      [点我收藏+]

标签:code   htm   page   rar   函数参数   https   oid   class   图片   

  今天在看源码的时候,面对以下有点蒙蔽,在这里对可变参数做一下总结。

技术图片

  主要理解取自一个博客,c版本的:https://www.cnblogs.com/bettercoder/p/3488299.html

示例输出如下:

  技术图片

更多详细解释请看: http://www.cplusplus.com/reference/cstdarg/va_arg/?kw=va_arg

 

c++中的TMP:

 主要参考c++primer  page:618-624 (当时觉得应该用不上这么魔幻的操作就跳过了 QAQ)

术语:

  可变数目的目的参数被称为参数包(parameter packet)

  模板参数包(template parameter packet)

  函数参数包(function parameter packet)

template <typename T,typename... Args>
void foo(const T& t, const Args& ... rest)
{
    std::cout << sizeof...(Args) << endl;
    std::cout << sizeof...(rest) << endl;
}

int main()
{
    foo(1, 2, 3, 4, 5, 6, 7, 8);
    system("pause");
    return 0;
}

都输出了7。

更高级的std::forward保证了模板传参时原来是右值的参数仍为右值,而不会变成左值。

详细如下:http://www.cplusplus.com/reference/utility/forward/?kw=forward

关于可变参数varargs

标签:code   htm   page   rar   函数参数   https   oid   class   图片   

原文地址:https://www.cnblogs.com/manch1n/p/10804070.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!