3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

OpenCVAdvent Calendar 2024

Day 22

OpenCV5での、C++Standard要求をどうするのか選ぶの手伝って!(の話)

Posted at

この記事は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ライフをお過ごしくださいませ!!

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?