次の方法で共有


警告 C26410

パラメーター 'parameter' は、const の一意のポインターへの参照です。代わりに使用 const T* するか、代 const T& わりに (r.32)

一般に、const ユニーク ポインターへの参照は意味を持ちません。 これらは、生の参照またはポインターに安全に置き換えることができます。 この警告は、C++ Core Guidelines ルール R.32 を適用します。

解説

  • ユニーク ポインター チェックには、スマート ポインターを識別するための広範な条件があります。 C++ Core Guidelines ルール R.31: std 以外のスマート ポインターがある場合は、std の基本パターンに従って、ユニーク ポインターと共有ポインターの概念について説明します。 ヒューリスティックは単純ですが、驚きにつながる可能性があります。スマート ポインター型は、いずれか operator-> を定義する任意の型です operator*。 コピー可能な型 (共有ポインター) には、パブリック コピー コンストラクターか、Rvalue 以外の参照パラメーターを処理するオーバーロードされた代入演算子が必要です。

  • テンプレート コードによって、ノイズの多い警告が生成される場合があります。 テンプレートは、参照を含むさまざまな間接参照レベルを持つさまざまな型パラメーターを使用してインスタンス化できます。 一部の警告は明らかではない場合があります。修正では、テンプレートの一部の再作業が必要になる場合があります (間接参照の明示的な削除など)。 テンプレート コードが意図的に汎用的である場合は、警告を抑制できます。

コード分析名: NO_REF_TO_CONST_UNIQUE_PTR

不要な参照:

std::vector<std::unique_ptr<Tree>> roots = GetRoots();
std::for_each(
    roots.begin(),
    roots.end(),
    [](const auto &root) { Rebalance(root.get()); });   // C26410