AUTOSAR C++14 Rule A18-9-1
The std::bind shall not be used
説明
ルール定義
std::bind を使用してはなりません。
根拠
std::bind は、関数オブジェクトなどの呼び出し可能なオブジェクトを受け取り、そのオブジェクトの転送呼び出しラッパーを生成します。そのラッパーを呼び出すことで、ラッパー内で指定した引数にバインドされた何らかのオブジェクト引数を使用して、そのオブジェクトが呼び出されます。たとえば、このコード スニペットでは bar によって foo が呼び出されます。このとき bar の 1 番目 (2 番目) の引数は foo の 2 番目 (1 番目) の引数にバインドされています。
int foo(int, int); auto bar = std::bind(foo, _2, _1); bar(10, 20); //call to foo(20, 10)
std::bind の使用は、関数呼び出しの可読性を損ないます。foo についてよく知らない開発者は、foo の宣言を確認して、bar に引数を渡す方法を知る必要があります。また、ある関数パラメーターを別のパラメーターと混同する可能性もあります。また、std::bind を使用して作成する関数をコンパイラがインライン化することはあまりありません。トラブルシューティング
ルール違反が想定されるものの、Polyspace® から報告されない場合は、コーディング規約違反が想定どおりに表示されない理由の診断を参照してください。
例
チェック情報
| グループ: 18 言語サポート ライブラリ |
| カテゴリ: Required、Automated |
バージョン履歴
R2019b で導入