問題タブ [reference-wrapper]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - std::vector で std::find が失敗する> T が名前空間にある場合、「'operator==' に一致しません」というエラーが発生する
私は現在、大規模なコード プロジェクトに取り組んでおり、この機会に名前空間について学び、使用したいと考えていました。私が定義したすべてのクラスは、単一の名前空間 Test 内にあります。
ここで Thing と呼ばれる私のクラスの 1 つには、一意の ID があります。いくつかのモノへの参照の std::vector を保持できる必要があるため、std::reference_wrappers を使用しています。プログラムのポイントで、特定の std::reference_wrappers をベクターから削除する必要があるため、std::find を使用します。
これをコンパイルしようとすると、エラーが発生します。
ただし、名前空間を削除すると、コードは正しくコンパイルされます。
c++ - reference_wrapper の添字演算子
std::reference_wrapper<T>
関数のような場合に備えて、関数呼び出し演算子のオーバーロードがあることを最近知りましたT
。のようなものをキャプチャする場合に、標準委員会が配列添え字演算子を含めない理由があるかどうか疑問に思いstd::vector
ます。クラス メンバーとしてのみオーバーロードできる 2 つの典型的な演算子のうち、1 つだけがこの標準クラスに存在するのは奇妙に思えます。
この背後にある理論的根拠は何ですか?