[解決済み] C++11でラムダ(同じ型)のベクターを作成できないのはなぜですか?
2023-02-08 13:52:01
質問
lambdaのvectorを作ろうとしましたが、失敗しました。
auto ignore = [&]() { return 10; }; //1
std::vector<decltype(ignore)> v; //2
v.push_back([&]() { return 100; }); //3
2行目まで、それは は正常にコンパイルされます。 . しかし、3行目では コンパイルエラー :
error: no matching function for call to 'std::vector<main()::<lambda()>>::push_back(main()::<lambda()>)'.
関数ポインタのベクトルも関数オブジェクトのベクトルもいらない。しかし、関数オブジェクトのベクトルで 実 ラムダ式、私のために働くだろう。これは可能ですか?
どのように解決するのですか?
すべてのラムダは
という異なる型を持っています。
を持ちます。 -たとえ同じシグネチャを持っていてもです。のような実行時カプセル化コンテナを使用する必要があります。
std::function
のような実行時カプセル化コンテナを使う必要があります。
など。
std::vector<std::function<int()>> functors;
functors.push_back([&] { return 100; });
functors.push_back([&] { return 10; });
関連
-
[解決済み】getline()が何らかの入力の後に使用されると動作しない 【重複あり
-
[解決済み】C++コンパイルタイムエラー:数値定数の前に期待される識別子
-
[解決済み】デバッグアサーションに失敗しました。C++のベクトル添え字が範囲外
-
[解決済み】システムが指定されたファイルを見つけられませんでした。
-
[解決済み】CMakeエラー at CMakeLists.txt:30 (project)。CMAKE_C_COMPILER が見つかりませんでした。
-
[解決済み] なぜテンプレートはヘッダーファイルでしか実装できないのですか?
-
[解決済み] なぜ、オブジェクトそのものではなく、ポインタを使用しなければならないのですか?
-
[解決済み] switch文の中で変数を宣言してはいけないのはなぜですか?
-
[解決済み] なぜJavaのVector(およびStack)クラスは時代遅れ、または非推奨とされているのですか?
-
[解決済み] std::vectorをハードコードされた要素で初期化する最も簡単な方法は何ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] テスト
-
[解決済み】C++でint型に無限大を設定する
-
[解決済み】LLVMで暗黙のうちに削除されたコピーコンストラクタの呼び出し
-
[解決済み】 != と =! の違いと例(C++の場合)
-
[解決済み】'cout'は型名ではない
-
[解決済み】クラステンプレートの使用にはテンプレート引数リストが必要です
-
[解決済み】CMakeエラー at CMakeLists.txt:30 (project)。CMAKE_C_COMPILER が見つかりませんでした。
-
[解決済み】C++ - ステートメントがオーバーロードされた関数のアドレスを解決できない。
-
[解決済み】デバッグアサーションに失敗しました
-
[解決済み] C++11で "auto "で演繹した場合のlambdaの型は何ですか?