CLion 2026.2 Help

C++ のサポート

CLion には 2 つの言語エンジン 、組み込みエンジンと Clangd ベースのエンジンの両方が並行して組み込まれています。

Clangd ベースのエンジンは、エディターで表示される警告やエラーを検出し、クイックフィックスを提供、特定のナビゲーションアクションやハイライト、補完を行います。CLion 独自のエンジンはリファクタリングなどのコードインサイト機能に使われます。 Clangd 設定で Clangd のスコープを調整できます。

次の表は、2 つのエンジンが デフォルトで CLion 機能を処理する方法を示しています。

IDE 機能

言語エンジン

構文ハイライト

clangd

エラー / 警告とクイックフィックス

clangd

補完

Clangd のみ、両方、組み込みのみ *

フォーマット: ClangFormat

clangd

フォーマット: コードスタイル設定

内蔵エンジン

ナビゲーション

** の両方

パラメーターヒント

clangd

リファクタリング

内蔵エンジン

* - Clangd 設定で選択したとおり。

** - 両方のエンジンが使用されます。 Clangd はキャレットでの参照のハイライト、 Go to declarationGo to definitionクイックドキュメントクイック定義使用箇所の検索をサポートします。

言語標準への準拠

CLion は、 C++11C++14C++17 、部分的に C++20 を完全にサポートします。

C++11 および C++14 のサポートは、組み込みエンジンによって提供されます。 C++17 機能の一部もサポートしていますが、残りの機能は Clangd によって提供されます。

C++20 標準のサポートは、解析とリファクタリング (組み込みエンジンによって処理される) を除き、Clangd に依存します。 さらに、内蔵エンジンにより、Clangd の C++20 の概念サポートが拡張されます (詳細については、 専用記事を参照してください)。

以下の表に、標準サポートのステータスの概要と、C++20 および C + 17 サポートの詳細を示します。

標準

Clangd (CXX_status(英語))

内蔵エンジン

C++20、C++ 2b

部分的なサポート

  • Clangd でサポートされる機能の解析とリファクタリング

  • 拡張された Concepts サポート (Clangd ベース):カスタムハイライト、コード補完、専用インスペクション、リネームリファクタリング、Go to Definition や Find Usages などのナビゲーションアクション。

  • モジュールの初期サポート (Clangd に基づく): キーワードのハイライト、補完、宣言と定義の間のナビゲーション、モジュール内の使用箇所の検索とリファクタリング、およびいくつかのクロスモジュールリファクタリング。

C++17

Clang 5 以降の完全サポート

部分的なサポート

C++14

フルサポート

フルサポート

C++11

フルサポート

フルサポート

C++ 2b

言語機能

Clang サポート状況 (英語)

エラーのハイライトとクイックフィックス

補完

ナビゲーション

解析

リファクタリング

リテラル接尾辞 uzz for size_tssize_t (P0330R8(英語))

部分的に

-

-

-

-

-

ラムダの () をすべての場合でオプションにします (P1102R2(英語))

部分的に

-

-

-

-

-

より単純な暗黙の移動 (P2266R1(英語))

部分的に

-

-

-

-

-

if consteval (P1938R3(英語))

-

-

-

-

-

-

重複する属性を許可する (P2556R1(英語))

一部

-

-

-

-

-

コンテキスト変換を bool に絞り込む (P1401R5(英語))

一部

-

-

-

-

-

ラインスプライシングの前に空白をトリミングする (P2223R2(英語))

+

clangd

clangd

混合、Clangd に依存

-

-

宣言順序のレイアウトを義務付ける (P1874R4(英語))

+

clangd

clangd

混合、Clangd に依存

-

-

UAX31 を使用した C++ 識別子構文 (P1949R7(英語))

一部

-

-

-

-

-

混合文字列リテラルの連結 (P2201R1(英語))

+

clangd

clangd

混合、Clangd に依存

-

-

C++20

言語機能

Clang サポート状況 (英語)

エラーのハイライトとクイックフィックス

補完

ナビゲーション

解析

リファクタリング

ビットフィールドのデフォルトメンバー初期化子 (P0683R1(英語))

+

clangd

clangd

混合、Clangd に依存

-

-

const& - メンバーへの修飾ポインター (P0704R1(英語))

+

clangd

clangd

混合、Clangd に依存

-

-

ラムダキャプチャーを許可 [=, this] (P0409R2(英語))

+

clangd

clangd

混合、Clangd に依存

-

-

プリプロセッサーのコンマ省略のための __VA_OPT__ (P0306R4(英語), P1042R1(英語))

+

clangd

clangd

混合、Clangd に依存

-

-

指定イニシャライザー (P0329R4(英語))

+

clangd

clangd

混合、Clangd に依存

-

-

一般的なラムダのテンプレートパラメーターリスト (P0428R2(英語))

+

clangd

clangd

混合

内蔵エンジン

-

概念: P0734R0(英語) P0857R0(英語) P1084R2(英語) P1141R2(英語) P1616R1(英語) P1452R2(英語)

+

clangd

clangd

混合

内蔵エンジン

組み込みエンジン、 リネームのみ

概念: P0848R3(英語) P1972R0(英語) P1980R0(英語) P2103R0(英語) P2092R0(英語) P2113R0(英語)

-

-

-

-

-

-

初期化子を使用した範囲ベースの for ステートメント (P0614R1(英語))

+

clangd

clangd

混合

内蔵エンジン

内蔵エンジン

表示されない ADL および関数テンプレート (P0846R0(英語))

+

clangd

clangd

混合、Clangd に依存

-

-

const がデフォルトのコピーコンストラクターと一致しません (P0641R2(英語))

+

clangd

clangd

混合、Clangd に依存

-

-

一貫した比較 (operator<=>): P0515R3(英語) P0905R1(英語) P1120R0(英語) P1185R2(英語) P1186R3(英語) P1630R1(英語) P1946R0(英語) P1959R0(英語)

+

clangd

clangd

混合

内蔵エンジン

-

一貫した比較 (operator<=>): P2002R1(英語)

一部

-

-

-

-

-

一貫した比較 (operator<=>): P2085R0(英語)

-

-

-

-

-

-

専門分野のアクセスチェック (P0692R1(英語))

+

clangd

clangd

混合、Clangd に依存

-

-

デフォルトの構築可能で割り当て可能なステートレスラムダ (P0624R2(英語))

+

clangd

clangd

混合、Clangd に依存

-

-

評価されていないコンテキストのラムダ (P0315R4(英語))

部分的に (temp.deduct/9 を実装していません)

clangd

clangd

混合、Clangd に依存

-

-

[[no_unique_address]] 属性 (P0840R2(英語))

+

clangd

clangd

混合

内蔵エンジン

-

[[likely]] および [[unlikely]] 属性 (P0479R5(英語))

+

内蔵エンジン

内蔵エンジン

内蔵エンジン

内蔵エンジン

-

typename は他のコンテキストではオプション (P0634R3(英語))

-

-

-

-

-

-

ラムダ初期キャプチャーのパック拡張 (P0780R2(英語))

+

clangd

clangd

混合

内蔵エンジン

-

非型テンプレートパラメーターとしてのクラス型(P0732R2(英語)P1907R1(英語)

一部

clangd

Clang

-

-

-

オペレーター削除の破棄 (P0722R3(英語))

+

clangd

clangd

混合、Clangd に依存

-

-

constexpr 制限の緩和 (P1064R0(英語), P1002R1(英語), P1327R1(英語), P1330R0(英語), P1331R2(英語), P1668R1(英語), P0784R7(英語))

+

clangd

clangd

混合、Clangd に依存

-

-

ユーザーが宣言したコンストラクターで集計を禁止する (P1008R1(英語))

+

clangd

clangd

混合、Clangd に依存

-

-

機能テストマクロ (P0941R2(英語))

+(英語)

clangd

clangd

混合、Clangd に依存

-

-

explicit(bool) (P0892R2(英語))

+

clangd

clangd

混合

内蔵エンジン

内蔵エンジン

符号付き整数は 2 の補数です (P1236R1(英語))

+

clangd

clangd

混合、Clangd に依存

-

-

char8_t (P0482R6(英語))

+

clangd

clangd

混合

内蔵エンジン

-

即時機能 (consteval) (P1073R3(英語), P1937R2(英語))

+

clangd

clangd

混合

内蔵エンジン

-

std::is_constant_evaluated (P0595R2(英語))

+

clangd

clangd

混合、Clangd に依存

-

-

ネストされたインライン名前空間 (P1094R2(英語))

+

clangd

clangd

混合、Clangd に依存

-

-

構造化バインディング拡張 (P1091R3(英語), P1381R1(英語))

部分的に

-

-

-

-

-

より強力な Unicode 要件 (P1041R4(英語), P1139R2(英語))

+

clangd

clangd

混合、Clangd に依存

-

-

集計の括弧で囲まれた初期化 (P0960R3(英語), P1975R0(英語))

-

-

-

-

-

-

モジュール: P1766R1(英語) (DR(英語)), P1779R3(英語)

+

clangd

clangd

clangd

clangd

clangd

モジュール: (P1874R1(英語)), P2115R0(英語), P1103R3(英語), P1815R2(英語)

部分的に

-

-

-

-

-

モジュール: P1979R0(英語), P1857R3(英語), P1811R0(英語), P1703R1(英語)

-

-

-

-

-

-

コルーチン (P0912R5(英語))

部分的に

clangd

clangd

混合

内蔵エンジン

-

a[b,c] を廃止 (P1161R3(英語))

+

clangd

clangd

混合、Clangd に依存

-

-

問題のある volatile の使用を廃止する (P1152R4(英語))

+

clangd

clangd

混合、Clangd に依存

-

-

[[nodiscard("with reason")]] (P1301R4(英語))

+

clangd

clangd

混合、Clangd に依存

-

-

using enum (P1099R5(英語))

+

clangd

clangd

混合、Clangd に依存

-

-

集計のクラステンプレート引数の控除 (P1816R0(英語), P2082R1(英語))

-

-

-

-

-

-

エイリアステンプレートのクラステンプレート引数の控除 (P1814R0(英語))

-

-

-

-

-

-

未知の境界の配列への変換を許可する (P0388R4(英語))

-

-

-

-

-

-

constinit (P1143R2(英語))

+

clangd

clangd

混合

内蔵エンジン

-

擬似デストラクタがオブジェクトのライフタイムを終了 P0593R6(英語) (DR(英語))

+ (Clang 11)

-

-

-

-

-

より暗黙的な動き P1825R0(英語) (DR(英語))

+

clangd

clangd

混合、Clangd に依存

-

-

C++17

言語機能

エラーのハイライトとクイックフィックス

補完

ナビゲーション

リファクタリング

自動非型パラメーター

clangd

clangd

混合、Clangd に依存

-

UTF-8 文字リテラル

clangd

clangd

混合、Clangd に依存

-

* this のラムダキャプチャー

clangd

clangd

混合、Clangd に依存

-

[[nodiscard]] 属性

clangd

clangd

混合、Clangd に依存

-

[[fallthrough]] 属性

clangd

clangd

混合、Clangd に依存

-

[[maybe_unused]] 属性

clangd

clangd

混合、Clangd に依存

-

関数タイプの一部としての「noexcept」

clangd

clangd

混合、Clangd に依存

-

引数が 1 つの静的アサート

clangd

clangd

混合、Clangd に依存

-

if constexpr

clangd

clangd

混合、Clangd に依存

-

変数のインライン化

clangd

clangd

混合、Clangd に依存

-

braced-init-list からの自動推論の新しいルール

clangd

clangd

混合、Clangd に依存

-

constexpr lambdas

clangd

clangd

混合、Clangd に依存

-

ネストされた名前空間の定義

clangd

Clangd のみ、両方、組み込みのみ *

混合 **

組み込みエンジン

式を折りたたむ

clangd

Clangd のみ、両方、組み込みのみ *

混合 **

-

クラステンプレート引数の推論

clangd

Clangd のみ、両方、組み込みのみ *

混合 **

-

__has_include

clangd

clangd

-

-

* - Clangd 設定で選択したとおり。

** - 両方のエンジンが使用されます。 Clangd はキャレットでの参照のハイライト、 Go to declarationGo to definitionクイックドキュメントクイック定義使用箇所の検索をサポートします。

C++ コードインスペクション

CLion は、 設定 | エディター | インスペクション | C/C++ で構成可能なインスペクションのセットを使用して、C/C++ コードの静的分析を実行します。 一部の C/C++ インスペクションは Clangd によって提供されますが、その他は組み込みエンジンの一部として機能します。

以下の表は、特定のインスペクションまたはインスペクションセットに使用されるエンジンを示しています。

インスペクション

提供

データフロー分析

clangd

関数

組み込みエンジン

一般: 引数選択の欠陥

clangd

一般: Clang-tidy

Clangd または組み込み、 選択済み

一般: 制約のない変数型

内蔵エンジン (Clangd に基づく)

一般: 空の宣言またはステートメント

clangd

一般: フォーマット指定子

C/C++ の場合、このチェックは Clang の -Wformat(英語) 診断によってカバーされます。

一般: 条件式の '='

C/C++ の場合、このチェックは Clang の -Wparentheses(英語) 診断によってカバーされます。

一般: 一貫性のないネーミング

内蔵エンジン

一般: 欠落した switch case

C/C++ の場合、このチェックは Clang の -Wswitch(英語) 診断によってカバーされます。

一般: 簡略化可能なステートメント

clangd

一般: コンストラクターまたはデストラクターからの仮想呼び出し

clangd

2026 年 7 月 15 日