为什么c++ 11要求我们编写:
[a,b]() mutable { a=7; } // b is needlessly mutable, potential source of bugs
代替:
[mutable a,b]() { a=7; } // no problems here
这是不够重要的疏忽吗?还是有特定的技术原因?
最佳答案
在n2651中提到了您的建议:
我不知道这是否是唯一原因,但似乎确实有人考虑过。
但是,在Herb Sutter's proposal中,他建议摆脱mutable
而不是隐式创建捕获副本const
,因此我们可能会再次看到更改。