第5章 RHEL 10 における主な変更点


以下は、RHEL 10 における重要な変更点です。

5.1. C++ における互換性に影響を与える変更

std::condition_variable::wait がスレッドのキャンセルポイントになる
GCC 11 以前では、std::condition_variable::wait 関数は noexcept であったため、スレッドのキャンセルと互換性がありませんでした。その結果、pthread_cancel の呼び出しによって std::condition_variable::wait でブロックされたスレッドがキャンセルされると、プロセスは終了します。GCC 12 以降では、std::condition_variable::waitpthread_cancel 関数の呼び出しによってキャンセルされる可能性があり、その際にはスタックがアンワインドされます。例外をスローしない wait に依存するコードがある場合は、コードを確認して適切なアクションを実行してください。
非推奨のクラステンプレート, 一部のクラステンプレートは C++ の新しいバージョンで非推奨となりました。GCC 12 以降では警告の診断が生成されます。
  • 次のクラステンプレートは C++11 以降では非推奨となりました。

    • std::unary_function
    • std::binary_function
  • std::iterator クラステンプレートは、C++17 以降では非推奨となりました。

警告診断を防ぐには、次のいずれかのアクションを実行します。

  • コードに他の変更を加えたくない場合は、GCC の診断プラグマを使用して警告診断を無効にします。以下に例を示します。

    #pragma GCC diagnostic push
    #pragma GCC diagnostic ignored “-Wdeprecated-declarations"
    class Functor : public std::unary_function<int, int>
    { /* … */ };
    #pragma GCC diagnostic pop
  • コードを C++ の新しいバージョンと互換性を持たせたい場合は、コード内のこれらのクラステンプレートをネストされた typedefs に置き換えます。たとえば、std::unary_function 基本クラスを result_type および argument_type typedefs に置き換えることができます。

    class Functor
    {
      using result_type = int;
      using argument_type = int;
      /* … */
    };
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

Red Hat ドキュメントについて

Legal Notice

Theme

© 2026 Red Hat
トップに戻る