このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
AUTOSAR C++14 Rule A14-7-2
Template specialization shall be declared in the same file (1) as the primary template (2) as a user-defined type, for which the specialization is declared
説明
ルール定義
Template specialization shall be declared in the same file (1) as the primary template (2) as a user-defined type, for which the specialization is declared.
根拠
このルールに従えば、動作が定義されていない状況が回避されます。たとえば、コンパイラがテンプレートをインスタンス化した "後で" テンプレートの部分的な特殊化を検出した場合、動作は定義されません。テンプレートと同じファイルでテンプレートを特殊化した場合は、この状況が起きる可能性が低くなります。
テンプレートとその特殊化が同じファイルの同じ翻訳単位に含まれているため、特殊化によってコンパイル時のインターフェイスを簡単に拡張することもできます。同じ理由が、テンプレートの特殊化をテンプレートが特殊化される型と同じ型のファイルで行う必要があるという要件にも当てはまります。
Polyspace 実装
チェッカーは、各テンプレートの特殊化をチェックして、以下の場合に違反を報告します。
特殊化が、特殊化されたテンプレートと同じファイル内で行われていない。
特殊化が、テンプレートが特殊化されたユーザー定義の型が定義されたのと同じファイル内で行われていない。
トラブルシューティング
ルール違反が想定されるものの、Polyspace® から報告されない場合は、コーディング規約違反が想定どおりに表示されない理由の診断を参照してください。
例
チェック情報
| グループ: テンプレート | 
| カテゴリ: Required、Automated | 
バージョン履歴
R2020a で導入