zoukankan      html  css  js  c++  java
  • 关于可变参数varargs

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

      主要理解取自一个博客,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

  • 相关阅读:
    py 5.11
    py 5.10
    py 5.9
    py 5.8
    python 5.7
    python 5.4
    python 5.3
    python 5.2
    python 4.28
    python 4.27
  • 原文地址:https://www.cnblogs.com/manch1n/p/10804070.html
Copyright © 2011-2022 走看看