【发布时间】:2020-03-03 14:33:21
【问题描述】:
当使用 C++14 的初始化捕获时,会应用 'auto' 类型推导规则(这会丢弃引用、const 和 volatile)
请注意,我不是在说 const 引用。如果我想要一个 const 引用,我可以写:
auto lambda = [&widget = std::as_const(widget)] () {};
// C++17
或者我可以在 lhs 中添加 & 将 rhs 转换为 const 引用。
我要问的是:我可以写这样的东西吗?:
auto lambda = [const widget = widget] () {};
【问题讨论】:
-
为什么需要
const widget? lambda 的operator ()已经是const(除非您将其标记为mutable),因此您无法更改函数内的值对象捕获。 -
还有,如果您有
const参考或const副本,这有什么关系?我的意思是如果你想要它const,就不需要复制 -
@NathanOliver 我不明白为什么我现在需要它。只是想知道是否有办法做到这一点,以防万一我使用“可变”并希望某些变量保持不可修改。
-
你以后也不需要它,当你可以使用 const 引用时;)
-
@idclev463035818 是的,你是对的。我不认为我会需要它。只是想知道我是否可以这样做。
标签: c++ lambda type-deduction