数か月間保留されていたプロジェクトの作業を再開しました。前回コンパイルしたときは、エラーも警告もなく、問題なく動作していました。しかし、今日早くコンパイルしようとしたときに、この警告が表示されました
attention : ‘template<class _Operation> class std::binder2nd’ is deprecated [-Wdeprecated-declarations]
この警告は、プロジェクト全体で使用する Eigen/Geometry を含めると、文字通り何百回も表示されます。
In file included from [...]/include/Eigen/src/Core/ArrayBase.h:109:0,
from [...]/include/Eigen/Core:350,
from [...]/include/Eigen/Geometry:4,
from [...]/include/[myproject]/types.hh:8,
from [...]/include/[myproject]/voronoi.hh:8
それ以来、私は Eigen を更新していません (現在も最後の更新である 3.2.4 を使用しています)。ただし、前回コンパイルしてから、GCC は 5.1.0 に更新されています (archlinux を使用しています)。
質問:
- std::binder2nd が非推奨であることを示す gcc 5.1.0 に関する問題はありますか
- Eigen を更新する必要がありますか?
- ビルドの冗長性を失うことなく、これらの特定の警告を黙らせるにはどうすればよいですか?
答え
std::bind2nd
それは本当に非推奨であり、Eigen でそれを解決するためにコミットが行われたことを認めます。ただし、このコミットはまだマスター ブランチとマージされていません :/ ( std::bind2nd
Eigen のコードにまだ存在するため、問題は解決しません)
要点: Eigen の最後の安定版は非推奨です