【发布时间】:2015-11-02 08:23:54
【问题描述】:
这被 g++(4.9.3 和 5.2.0)拒绝,但被 clang 3.5.0 接受:
int main() {
const int ci = 0;
auto lambda = [ &cap = ci ]() { };
}
g++ 给出error: binding ‘const int’ to reference of type ‘int&’ discards qualifiers。似乎 g++ 拒绝允许捕获非常量引用,当然除了使用普通的旧 C++11 捕获 [&ci]。这似乎是一个非常奇怪的约束,也许是 g++ 中的一个错误?
【问题讨论】:
-
@CoryKramer,这个问题确实密切相关。我今天也评论了这个问题。我想我的问题是:“给定一个 const 对象,我如何通过引用来捕获它?”。而这个问题是“给定一个 non-const 对象,我如何通过 const 引用捕获它?”。我想一个好的答案会涵盖这两个问题。