Использование `std :: function `для вызова непустой функции

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

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

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

Edit

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

19
задан ildjarn 19 February 2012 в 08:36
поделиться