少し前に、私はstd::function
このようにかなり使用しました:
std::function<void(int)> func = [](int i) -> int { return i; };
基本的に、さまざまな関数オブジェクトを に格納したかったのでこれを行いましたstd::function
が、これらの関数の戻り値の型を制限したくありませんでした。これはうまくいくように見えたので、私はそれに行きました。しかし、私はそれが安全に使用できると確信しておらず、それに関するドキュメントを見つけることができませんでした. この使用法が正当かどうかは誰にもわかりませんか? または、より一般的には、に安全に割り当てることができるオブジェクトのルールは何std::function
ですか?
編集
明確にするために、私が懸念している問題は、ラムダ関数が戻り値の型で宣言されてint
いる間、を返すことです。特に呼び出しが行われると、これで問題ないかどうかわかりません。func
void
func()