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