C++で汎用コードを扱う場合、std::identity
ファンクタ(std::negate
など)が非常に便利です。これが標準ライブラリにない特別な理由はありますか?標準ライブラリにstd :: identityが存在しない理由はありますか?
6
A
答えて
2
std :: identityが導入された直後に、拡張機能として現れるstd :: identityのpre-cpp98定義との衝突から始めて、問題が発生し始めました。https://groups.google.com/a/isocpp.org/forum/#!topic/std-proposals/vrrtKvA7cqo このサイトでは少し歴史があります。
+0
IDを使用すると、テンプレート引数の控除を防ぐことができます。 Boost :: clampはこのトリックを使用します。 https://stackoverflow.com/questions/41767240/what-is-stdidentity-and-how-it-is-usedも参照してください。 – gast128
関連する問題
- 1. 標準ライブラリにRustの `std :: mem :: drop`と同等のC++がありますか?
- 2. コンパイルされた標準ライブラリのstd :: endlはどこにありますか?
- 3. Fortranには標準ライブラリがありますか?
- 4. F#ライブラリには、 `argMax`の標準関数がありますか?
- 5. OCaml標準ライブラリに `flip`関数がありますか?
- 6. 標準ライブラリWPFコントロールのギャラリーはどこにありますか?
- 7. C++標準ライブラリのヘッダはどこにありますか
- 8. MSVC std :: exceptionは標準に準拠していませんか?
- 9. 標準C++ライブラリにはどのような例外クラスがありますか
- 10. 標準.NETライブラリは、アンマネージDLLに依存しますか?
- 11. プロセスコミュニケーションを扱う標準のHaskellライブラリがありますか?
- 12. find_if、for_each、countなどにstd ::が不要な理由はありますか?
- 13. ISOのC標準ライブラリの関数strcmpiはありますか?
- 14. Scala標準ライブラリのアクタはありますか?
- 15. Bloomierフィルタ用の標準ライブラリはありますか?
- 16. jQuery.eachがArray.forEachに依存しない理由はありますか?
- 17. ECMAScript標準でObject.setPrototypeOf(...)が存在しないのはなぜですか?
- 18. setuptoolsを使用しているときに標準ライブラリの依存関係を一覧表示する理由はありますか?
- 19. 標準の呼び出し規約が存在しますか?
- 20. std :: make_shared/std :: make_uniqueがリストの初期化を使用しない理由はありますか?
- 21. 標準的なdjangoサイトマップとWagtailサイトマップを混在させる標準的な方法はありますか?
- 22. C++ 11の標準ライブラリには前方宣言ヘッダーがありますか?
- 23. UMLには標準的な方法がありますか?
- 24. Elixirには標準的なcurry()関数がありますか?
- 25. ISO標準命名の標準はありますか?
- 26. 名前マングリングが標準化されていない理由
- 27. python標準ライブラリ
- 28. CまたはC++の標準ライブラリに論理(ブール)XOR関数がありますか?
- 29. C#.NETでは、StringDictionaryのコピーコンストラクタが存在しない理由はありますか?
- 30. C++のサーキュラーリストの標準実装は存在しますか?
これは、プレC++ 11ドラフトに存在していました。 IIRCでは、['std :: forward'](http://en.cppreference.com/w/cpp/utility/forward)のテンプレート引数の控除を防ぐために使用されていました。どこかに沿って、誰かが 'forward'に' remove_reference'が必要であることを認識しました。これはまた、非deducibleコンテキスト部分を処理しました。そして、おそらく 'identity'は他のものによって使われなくなったので落ちました。 – Praetorian
興味深いことに、C++の実装の中には、内部的に 'std :: _ Identity'テンプレートを使用しているようです。 – JAB