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