問題タブ [bind2nd]
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.
gcc - Eigen & GCC 5 : クラス std::binder2nd は非推奨です
数か月間保留されていたプロジェクトの作業を再開しました。前回コンパイルしたときは、エラーも警告もなく、問題なく動作していました。しかし、今日早くコンパイルしようとしたときに、この警告が表示されました
この警告は、プロジェクト全体で使用する Eigen/Geometry を含めると、文字通り何百回も表示されます。
それ以来、私は Eigen を更新していません (現在も最後の更新である 3.2.4 を使用しています)。ただし、前回コンパイルしてから、GCC は 5.1.0 に更新されています (archlinux を使用しています)。
質問:
- std::binder2nd が非推奨であることを示す gcc 5.1.0 に関する問題はありますか
- Eigen を更新する必要がありますか?
- ビルドの冗長性を失うことなく、これらの特定の警告を黙らせるにはどうすればよいですか?
答え
std::bind2nd
それは本当に非推奨であり、Eigen でそれを解決するためにコミットが行われたことを認めます。ただし、このコミットはまだマスター ブランチとマージされていません :/ ( std::bind2nd
Eigen のコードにまだ存在するため、問題は解決しません)
要点: Eigen の最後の安定版は非推奨です
c++ - std::bind2nd の代替
私は を持ってfoo
いstd::vector<int>
ます。一連の範囲の「エッジ」値を表します。
たとえば、foo
{1, 3, 5, 7, 11} の場合、範囲は 1 ~ 3、3 ~ 5、5 ~ 7、7 ~ 11 です。私にとって重要なのは、これが 4 ピリオドに相当することです。各ピリオドには、範囲の最後の数値ではなく、最初の数値が含まれることに注意してください。したがって、私の例では、8 は 3 番目 (ゼロベース) のピリオドに表示されます。3期にも7が登場。11 以上はどこにも表示されません。2 は第 0 ピリオドに表示されます。
bar
である aが与えられた場合int
、私は使用します
を含むべきピリオドを教えてくださいbar
。
私の問題:std::bind2nd
非推奨なので、リファクタリングする必要があります。更新された関数を使用した同等のステートメントは何ですか? std::bind
明らかな方法で「立ち寄る」ことはありません。
c++ - for_each ループの bind2nd
現在、頭を悩ませていることがあります。各要素が 1 ずつ増加する出力を期待していましたが、明らかにそうではありません。
よく見てみると、bind2nd 関数の戻り値が破棄されているためだと思います。つまり、関数はコンテナーの要素を変更しません。
私の考えは正しいですか?コンテナーが変更されていないことについて、誰かが確認または正しい説明を提供できますか?
c++ - エラー C2039: 'bind2nd': 'std' のメンバーではありません
VS2008 C++ プログラムを VS2017 に変換しようとしていますが、次のエラーが発生します。
いくつかの検索を行ったところ、int を size_t にするという推奨事項が 1 つ見つかりましたが、効果はありませんでした。これ以上の考えはありますか?