メインコンテンツ

AUTOSAR C++14 Rule A7-5-1

A function shall not return a reference or a pointer to a parameter that is passed by reference to const

説明

ルール定義

関数は、定数への参照渡しされるパラメーターへの参照またはポインターを返してはなりません。

根拠

const への参照によってパラメーターが関数に渡される場合、このパラメーターの代理として一時オブジェクトが関数に導入される可能性があります。このパラメーターへの参照またはポインターを返すと、一時オブジェクトへの参照またはポインターを返すことになる可能性があります。この一時オブジェクトの有効期間は関数とともに終わるので、このオブジェクトへのポインターまたは参照にアクセスすると、未定義の動作につながる可能性があります。

Polyspace 実装

const への参照渡しされた関数パラメーターへのポインターまたは参照を返す場合、ルール チェッカーは違反を報告します。

トラブルシューティング

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

すべて展開する

const int & divide_by_factor (int &val, const int &factor) {
    val = val / factor;
    return factor; // Noncompliant
}

void multiply_by_factor (int &val, const int &factor) {
    val = val * factor; // Compliant
}

この例では、ルール チェッカーは関数 divide_by_factor 内の return ステートメントに対して違反を報告します。この関数は、const に参照渡しされたパラメーターへの参照を返すためです。関数 multiply_by_factor にも同じパラメーターが渡されますが、この関数はそのパラメーターへの参照を返さないため、ルールに違反していません。

チェック情報

グループ: 宣言
カテゴリ: Required、Automated

バージョン履歴

R2019a で導入