Некоторое время назад я использовал std::function примерно так:
std::function<void(int)> func = [](int i) -> int { return i; };
В основном, я сделал это, потому что я хотел хранить различные объекты функции в std::function, но я не хотел ограничивать возвращаемые типы этих функций. Поскольку это, казалось, сработало, я пошел с ним. Но я не уверен, что он безопасен в использовании, и я не смог найти на нем никакой документации. Кто-нибудь знает, является ли это использование законным? Или, в общем, какие правила для объекта, который можно безопасно назначить std::function?
Изменить
Для пояснения проблема, о которой я беспокоюсь, заключается в том, что функция лямбда возвращает int, а func объявляется с типом возврата void. Я не уверен, что все в порядке, особенно после вызова func().