メインコンテンツ

AUTOSAR C++14 Rule A13-1-2

User defined suffixes of the user defined literal operators shall start with underscore followed by one or more letters

説明

ルール定義

ユーザー定義のリテラル演算子のユーザー定義の接尾辞は、アンダースコアで始まって後に 1 つ以上の文字を続けるものとします。

根拠

C++11 から、内部で数値を変換する接尾辞をリテラルに追加できます。たとえば、すべての計算を共通単位で実行するコードでは、単位変換を専用の演算子に任せ、定数値を定義するときには単位のリテラル接尾辞のみを使用できます。

この例では、リテラル接尾辞の _m_km がそれぞれ operator"" _m()operator"" _km() への呼び出しに解決されます。演算子によって、必ず、すべての値が同じ単位に変換されます。

constexpr long double operator"" _m(long double metres) {
    return metres;
}

constexpr long double operator"" _km(long double kilometres) {
    return 1000*kilometres;
}
...
long double minSteps = 100.0_m;
long double interCityDist = 100.0_km;

ユーザー定義のリテラル接尾辞は、アンダースコア (_) で始まる必要があります。アンダースコアで始まっていないリテラル接尾辞は、標準ライブラリで予約されています。

Polyspace 実装

ルール チェッカーは、以下の形式の定義にフラグを設定します。

operator "" suffix
ここで、suffix は、アンダースコアで始まっていないか、アンダースコアの後に英字以外の文字 (数字や特殊文字など) が含まれています。

トラブルシューティング

ルール違反が想定されるものの、Polyspace® から報告されない場合は、コーディング規約違反が想定どおりに表示されない理由の診断を参照してください。

チェック情報

グループ: オーバーロード
カテゴリ: Required、Automated

バージョン履歴

R2020a で導入