доступ из лямбды к члену класса
От: B0FEE664  
Дата: 13.01.16 14:59
Оценка: +1
В чём смысл запрета захвата членов класса в списке захвата?

Пусть 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
И каждый день — без права на ошибку...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.