c++ auto关键字和函数
c++ auto keyword and function?
在sha256 cpp代码中,有一些行让我感到困惑:
// Compress
auto RND = [&](u32 a, u32 b, u32 c, u32& d, u32 e, u32 f, u32 g, u32& h, u32 i)
{
t0 = h + Sigma1(e) + Ch(e, f, g) + K[i] + W[i];
t1 = Sigma0(a) + Maj(a, b, c);
d += t0;
h = t0 + t1;
};
在auto RND之后的代码是什么意思,它是一个函数还是别的什么?如果它是一个函数,如何调用它?
RND
是一个接受9个参数的lambda函数。由于lambda函数类型是unique unnamed non-union non-aggregate class type
, auto
是强制性的,或者您必须使用像std::function<...>
这样通过复制/赋值接受lambda的类型。
否则,只需调用:
RND(......);
是的,它是一个函数-它是一个"lambda"函数(尽管没有"λ"在视线中)。
你这样称呼它:
RND(x,y,z,w,i,j,k,l,m);
auto
从return
推断函数类型(无返回则void), [&]
所有变量通过引用捕获,(u32 a, ...)
unsigned int32变量声明,{...};
函数体。然后把它命名为RND(...);
你可以把它赋值给一个变量如果它返回一个值。
谢谢你,我只是学习这个试图回答你的问题,所以如果有人看到我遗漏的东西或有更多的东西,请补充。
相关文章:
- 如何确保C++函数在定义之前声明(如override关键字)
- C++函数的关键字?
- 应用于运算符而不是构造函数的显式关键字
- 如何通过 boost::p ython 重命名构造函数的关键字参数
- 是否建议在函数中使用using关键字
- C++ 如何将关键字"friend"与两个类的成员函数一起使用 相互包含
- 为什么 c++ 使用 throw() 关键字来指示函数不会引发任何异常
- 统一内存分配库的函数关键字
- 如何使用 "using" 关键字定义函数原型/签名
- 在 new 关键字中,由默认构造函数初始化的类中的元素是否也使用 new 关键字在C++?
- C++带有 using 关键字和参数包的模板函数
- 如何在 C++ 的 lambda 函数中传递同名的局部变量和参数(使用此关键字)?
- g++ 6.3,avx 内联函数上的 Kahan 求和用易失性关键字进行序列化
- ELI5 函数名称后面的"&&"关键字是什么意思
- 为什么静态成员函数定义不能有关键字"static"?
- 带有 "this" 关键字的 Java Copy 构造函数
- C++不使用"inline"或"static"无类函数的关键字时出现重定义链接错误
- 为什么带有 const 关键字的构造函数可以工作,而没有它就不能工作?
- 将 final 关键字添加到没有基类(未派生)的类中的虚函数是否有意义
- 虚函数关键字