代码如下所示:
auto generateHash = [](std::vector<File> &files) -> std::shared_ptr<std::string> {
// Other code here
}
这是什么意思?是一个foreach循环吗?开头的括号有什么作用?括号有什么作用?箭头是什么意思?由于没有C++11编译器,我无法编译它,并且在C++参考中找不到它。
这是什么意思?
It's a lambda- 一个函数对象。您可以像调用带有文件向量的函数一样调用它(由于某种奇怪的原因,通过可变引用传递),并且它返回字符串(由于某种奇怪的原因由共享指针管理)。
std::vector<File> files = get_some_files();
std::shared_ptr<std::string> hash = generateHash(files); // call the lambda
是一个foreach循环吗?
不,看起来像
for (auto thing : sequence) {/* code */}
开头的括号有什么作用?
它们表示它是一个 lambda。它们可以包含捕获列表您想要供 lambda 内的代码使用的局部变量。
箭头是什么意思?
那是一个尾随返回类型。在 C++11 中,如果需要,您可以将该语法与普通函数一起使用;但这是指定 lambda 返回类型的唯一方法。
我在 C++ 参考中找不到它。
就在这里:http://en.cppreference.com/w/cpp/language/lambda http://en.cppreference.com/w/cpp/language/lambda
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)