この記事はOpenCV Advent Calendar 2024の22日目の代打記事です。
他の記事は目次にまとめられています。
はじめに
OpenCV5のC++ Standard要求を決めるためのアンケートの意見をいくつか紹介したい。
まず結果。
C++ Std | 得票 |
---|---|
C++14 | 6% |
C++17 | 93% |
こんな感じで、OpenCV5で必要となるC++ Standardは、C++17になりました。
この中で皆さん、色々なベクトルで物事を捉えていて、なるほどーとなったので紹介していく。
C++11
- (賛成)衛星搭載コンピュータではC++14非サポートであり、C++11にしたい
- (賛成)組み込みボードデバイスの多くはC++17サポートできていません
C++14
- (否定)古いGCCのC++14だと、constexprで問題が起きることもあるのでC++17が良い
C++17
- (賛成)gcc/clang/msvcではC++17をほぼサポートしている!
- (賛成)std::string_viewサポートするために、C++17が必須!
- (賛成)C++17サポートにはGCC7が必要。Ubuntu 18.04に含まれる。もうこれ以上古いバージョンは使ってないでしょ?
- (賛成)どうしても古いコンパイラが必要な方はOpenCV4を引き続き利用できます。既にC++17は保守的な選択です!
- (賛成)任意の値マップに、現状のcv::dnn:DistやFileNodeの代わりに、std::anyが使えます!
- (賛成)既に成熟するのに十分な時間が経過しています。OpenCV5はC++17ベースで、OpenCV6はC++20ベースでモジュールを完全に取り入れると良いでしょう。
C++20
- (否定) まだ主流コンパイラでサポートしきれていない
- (賛成)モジュール付きC++20は、夢です!
まとめると
- C++17は、主要コンパイラで成熟済み!もうこれはチャレンジではなく保守的な選択ですよ!
- C++20は、もうちょっと安定化が必要… モジュール機能は将来やりたいね!
- 組み込み環境とかでC++11とかC++14が難しい場合は、OpenCV4を継続利用してね
ということで、OpenCV5のminimum requirement C++ standardは、C++17になりました、と。
個人的な主観は?
最後に個人的な主観を申し上げると、ほぼ、まとめと同じですね。
- OpenCV5は、C++17以上がよい。もう7年経過しており、枯れている安定化してある技術(2024~2025年リリース)
- OpenCV6は、C++20かC++23が良い。そのころにはコンパイラも成熟していそう(2027~2028年リリース)
それでは、皆様、楽しいOpenCVライフをお過ごしくださいませ!!