【发布时间】:2019-06-28 18:21:23
【问题描述】:
我最近发现,在 lambda 中按值捕获 const 对象意味着 labmda 主体内的变量(即 lambda 的数据成员)也是 const。
例如:
const int x = 0;
auto foo = [x]{
// x is const int
};
draft for C++17 的第 8.1.5.2 节中提到了此行为:
对于通过副本捕获的每个实体,在闭包类型中声明了一个未命名的非静态数据成员。这 这些成员的声明顺序未指定。这种数据成员的类型是被引用的类型 如果实体是对对象的引用,则对被引用函数类型的左值引用如果实体 是对函数的引用,否则是相应捕获实体的类型。一个成员 匿名工会不得抄袭。
我希望推断捕获变量的类型与推断 auto 相同。
是否有充分的理由为捕获的类型设置不同的类型推断规则?
【问题讨论】: