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