関数のベクトルを宣言する方法を見てきました(calling a function from a vector参照)。関数のベクトルを宣言する方法(lambda)
しかし、それはユーザーのポインタに答えます。最新のC++で新しい構文を使用して関数/ lambdaのベクトルを作成するにはどうすればよいですか?新しい構文を使用した機能の
例は、一般的にautoを使用する:
auto f = [] (std::string msg) -> void {
std::cout << msg << std::endl;
};
Fの実際の型は何ですか?私はこのタイプのベクトルを宣言できますか?それはstd::function<void(std::string)>
だろう、あなたの場合は
std::vector<std::function<void(void)>> vec;
vec.push_back([]()->void{});
:
は、対応するタイプで任意のヘルプ
"* Fの実際の型は何ですか*?" Unnameable>'はおそらくあなたの目的に合っています。 –
ildjarn
std::tuple
- オブジェクト自身。 "*このタイプのベクトルを宣言することはできますか?*"はい、ラムダはデフォルトで構成可能ではないので、役に立たないでしょう。 'std :: vectorラムダにクロージャがない場合はポインタを実際に使用することができます.btw – vu1p3n0x
ベクトルが必要ない場合(つまり実際のラムダがコンパイル時にわかっている場合)、lddasのstd :: tupleを作成できます。 – dats