[解決済み】ラムダ関数はテンプレート化できる?
質問
C++11では、ラムダ関数をテンプレート化する方法はあるのでしょうか?それとも、テンプレート化するには、本質的に特殊すぎるのでしょうか?
代わりに古典的なテンプレート化されたクラス/ファンクタを定義できることは理解していますが、問題はむしろ、この言語がラムダ関数をテンプレート化することを許可しているかどうかということです。
どのように解決するのですか?
2018年にUPDATEしました。C++20 には、テンプレート化され概念化されたラムダが搭載される予定です。この機能は、すでに標準草案に統合されています。
UPDATE 2014: C++14が今年リリースされ、この例と同じ構文でポリモーフィックラムダを提供するようになりました。一部の主要なコンパイラーはすでにこれを実装しています。
現状(C++11)では、悲しいかな、ありません。ポリモーフィックラムダは、柔軟性とパワーの点で優れているでしょう。
元々、モノモフィックで終わっていたのは、コンセプトがあったからです。概念がこのコード状況を難しくしていたのです。
template <Constraint T>
void foo(T x)
{
auto bar = [](auto x){}; // imaginary syntax
}
制約付きテンプレートでは、他の制約付きテンプレートのみを呼び出すことができます。(そうでなければ、制約をチェックすることができません。) Can
foo
呼び出す
bar(x)
? ラムダはどのような制約を持つのでしょうか(結局のところ、それに対するパラメータは単なるテンプレートです)。
コンセプトはまだこのようなことに取り組む準備ができていませんでした。
late_check
(呼び出すまでコンセプトがチェックされない)といった感じです。それを全部捨てて、単相ラムダにこだわった方がシンプルでした。
しかし、C++0xから概念が削除されたことで、ポリモーフィックラムダは再び単純な命題となった。しかし、そのための提案が見つからない :(
関連
最新
-
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型に無限大を設定する
-
[解決済み】C++ 非推奨の文字列定数から「char*」への変換について
-
[解決済み】C-stringを使用すると警告が表示される。"ローカル変数に関連するスタックメモリのアドレスが返される"
-
[解決済み】C++エラーです。"配列は中括弧で囲まれたイニシャライザーで初期化する必要がある"
-
[解決済み】オブジェクト引数のない非静的メンバ関数の呼び出し コンパイラーエラー
-
[解決済み】システムが指定されたファイルを見つけられませんでした。
-
[解決済み】デバッグアサーションに失敗しました
-
[解決済み] 変数サイズのオブジェクトが初期化されないことがある c++