Лямбды - это просто функциональные объекты.Поэтому везде, где вы можете использовать произвольный (то есть шаблонный) функтор, вы можете использовать лямбду.
У меня не установлена библиотека, поэтому я не могу проверить это, но, глядя на этот пример, я считаю, что эта модификация должна работать:
int main()
{
AlienDetector mydetector;
auto warn_people = []() {
cout << "There are aliens in the carpark!" << endl;
};
mydetector.signal_detected.connect( sigc::slot<void>(warn_people) );
mydetector.run();
return 0;
}
PS
Я не был полностью уверен в этом ответе, так как не смог его протестировать.Я нашел этот конструктор для класса слота в документации, и, поскольку я никогда не сталкивался с шаблоном конструктора в шаблоне класса, я не был уверен, что все типы смогут разрешить.Так или иначе, я написал тест, используя только стандартную библиотеку, которая делает что-то вроде того, что делает этот конструктор, и это работает. Вот оно