gpt4 book ai didi

c++ - Lambda 重新初始化 vector - 为什么它有效?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:18:35 24 4
gpt4 key购买 nike

为什么下面的编译?

vector<int> vec;

auto lambda = [ vec (move(vec)) ]() { //??
};

如何使用 vec (move(vec)) 重新初始化已分配的 vec 变量?这不是调用移动构造函数吗?

如果我写:

vector<int> vec;
vec (move(vec));

这是无效的

最佳答案

这称为 init-capture。它声明了一个新变量,它隐藏了上面的 vec。它用于捕获 lambda 表达式中的仅移动类型:

An init-capture behaves as if it declares and explicitly captures a variable of the form “auto init-capture ;” whose declarative region is the lambda-expression’s compound-statement, [..]

有关 cppreference 的更多信息.

关于c++ - Lambda 重新初始化 vector - 为什么它有效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29757638/

24 4 0
文章推荐: Rmpfr 不会安装
文章推荐: c - mmap 返回 ENOMEM
文章推荐: C++14 值初始化问题
文章推荐: linux - gcc 在 hpc 上出错
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com