< b; };
если a и b определены в блоке где эта строка кода, насколько я понимаю, сама glambda может интерпретироваться либо как function pointer либо как function object (если например хранить в векторе).
Это абстракция closure в c++ ?
если эта строка в лупе и a,b меняются, и при каждой итерации сохранять в вектор эту glambda, то значения a и b при вызове будут теми, которыми они были в каждой конкретной итерации ?
Залежить від того, як в лямбду будуть потрапляти a і b. https://en.cppreference.com/w/cpp/language/lambda#Lambda_capture
если A и B берутся из глобальной области видимости - будут взяты значения из глобальной области. Можно представить в виде функции которая делает return a < b;
залежить попрятанного яка? эт как?
насколько я понимаю, в виде класса AlessB который callable: class AlessB { int a; int b; AlessB(int a, int b) : a(a), b(b){} operator(): return this->a < this->b; }
glambda это функтор в любом случае. При пустых [] a и b не могут быть локальными переменными, только глобальными При захвате по значению a и b будут скопированы в точке создания лямбды, при захвате по ссылке сам понимаешь
если в [] указать a, b - да
почему если указать, если не указать, то он захватит значения a,b которые в блоке в котором определяется.
Откуда ты это взял
У тебя здесь в примере пустые скобки
мой косяк да, написал верно в описание, в лямбде нет, тут да ))
Обсуждают сегодня