Что я делаю не так?
getAnd
возвращает объект функции из функции-члена, которая захватывает и обращается к членам.
Вы вызываете эту функцию-член на локальную переменную и вернуть полученный объект функции за пределы области видимости. Элементы, на которые указывает объект функции, больше не существуют, и вызов объекта функции приводит к неопределенному поведению.
Когда я заменяю funcs на funcs_outside, все работает хорошо.
funcs_outside
- это глобальный объект, и вы обращаетесь к нему в течение его времени жизни, поэтому проблем нет.
как я могу это исправить?
Вы можете, например, захватить вместо этого копия члена:
return [funcs = this->funcs](const State &s)