LINUX.ORG.RU
#include <functional>
#include <iostream>

int main() {
    std::function<int (int, int)> fun = [](int a, int b) {
        return a + b;
    };

    std::cout << fun(5, 4) << std::endl;
}
crowbar
()
Ответ на: комментарий от tff

Спасибо!

До этого слышал лишь о том, что лямбда-функции появились в jdk 8, но не знал о них вообще ничего.

anion155
() автор топика

А каким образом ты хочешь получать в рантайме реализацию функции, чтобы её добавлять? Может тебе всё-таки нужен массив указателей на функции и добавление в него в рантайме заранее предопределённых функций по мере необходимости?

Ivan_qrt ★★★★★
()
Ответ на: комментарий от anion155

lambda-функция в callback

Есть такой код(осваиваю opencv)

VideoCapture video(file_name);
createTrackbar(/*some args*/,
                 [&video](int pos)
                 {
                   video.set(CV_CAP_PROP_POS_FRAMES, pos);
                 }
                );
Т.е. использование lamba-функции как callback. Если создавать с пустой маской переменных, то это возможно, но ведь нужно использовать переменную video. Можно это реализовать?

PS. Есть возможность передавать в callback ещё один параметр void *. Т.е. так

[](int pos, void *videoPt)
{
  videoPt->set(CV_CAP_PROP_POS_FRAMES, pos);
}
Но

error: 'void*' is not a pointer-to-object type

anion155
() автор топика
Ответ на: комментарий от Ivan_qrt

Уже написали. Лямбда функции как раз то что нужно.

anion155
() автор топика
Ответ на: lambda-функция в callback от anion155

Я тупой...

(*(VideoCapture *)videoPt).set(CV_CAP_PROP_POS_FRAMES, pos);
Спасибо всем за заданное направление )).

anion155
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.