Использование `std :: function <void (…)>` для вызова не void функции

Некоторое время назад я использовалstd::function примерно так:

std::function<void(int)> func = [](int i) -> int { return i; };

По сути, я сделал это, потому что я хотел хранить различные функциональные объекты вstd::function, но я не хотел ограничивать типы возвращаемых данных функций. Так как это, казалось, сработало, я пошел с этим. Но я не уверен, что это безопасно, и я не смог найти никакой документации по нему. Кто-нибудь знает, является ли это использование законным? Или, в более общем смысле, каковы правила для объекта, который может быть безопасно назначенstd::function?

редактировать

Для пояснения проблема, с которой я сталкиваюсь, заключается в том, что лямбда-функция возвращаетint, покаfunc объявляется с типом возвратаvoid, Я не уверен, что это нормально, особенно если один раз позвонитьfunc() сделан.

Ответы на вопрос(3)

Ваш ответ на вопрос