Utilizando `std :: function <void (…)>` para chamar a função non-void
á um tempo atrás eu useistd::function
praticamente assim:
std::function<void(int)> func = [](int i) -> int { return i; };
Basicamente, fiz isso porque queria armazenar diferentes objetos de função em umstd::function
, mas não queria restringir os tipos de retorno dessas funções. Como isso pareceu funcionar, eu fui com ela. Mas não estou convencido de que seja seguro usá-lo e não consegui encontrar nenhuma documentação sobre ele. Alguém sabe se esse uso é legítimo? Ou, mais geralmente, quais são as regras para o objeto que podem ser atribuídas com segurança a umstd::function
?
Para esclarecimento, o problema que me preocupa é que a função lambda retorne umint
, enquantofunc
é declarado com o tipo de retornovoid
. Não tenho certeza se está tudo bem, especialmente quando uma chamada parafunc()
é feito