В чём смысл запрета захвата членов класса в списке захвата?
Пусть m_n — член класса, а fn определяется внутри метода этого класса.
Почему тогда так можно:
auto fn = [&m_n = m_n](int n){ m_n = n; }; //ok
а так нельзя:
auto fn = [&m_n](int n){ m_n = n; }; //error
| пример |
| #include <iostream>
class A
{
public:
void f(int n)
{
//auto fn = [&rN = m_n](int n){ rN = n; }; //ok
//auto fn = [&m_n](int n){ m_n = n; }; //error
auto fn = [&m_n = m_n](int n){ m_n = n; }; //ok
fn(n);
}
int m_n;
};
int main()
{
A a;
a.f(1);
std::cout << a.m_n << std::endl;
return 0;
}
http://ideone.com/z0YB6c |
| |