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