共用方式為


警告 C26416

共用指標參數會由右值參考傳遞。 請改用值傳遞。

C++核心指導方針R.34:取得shared_ptr<小工具> 參數來表示函式是部分擁有者

很少需要透過右值參考傳遞共享指標。 除非它是共用指標類型本身移動語意的實作,否則共用指針對象可以透過值安全地傳遞。 使用右值參考也可能表示唯一指標更合適,因為它清楚地將唯一擁有權從呼叫端轉移給被呼叫者。

備註

  • 這項檢查可 std::shared_pointer 辨識和使用者定義類型,這些類型的行為可能會像共用指標一樣。 使用者定義共享指標預期會有下列特性:

  • 多載取值或成員存取運算元(公用和非刪除):

  • 複製建構函式或複製指派運算元(公用和非刪除):

  • 未刪除或預設的公用解構函式。 空解構函式仍會算作用戶定義。

範例

可疑的建構函式優化:

action::action(std::shared_ptr<transaction> &&t) noexcept // C26416
    : transaction_(std::move(t))
{}

action::action(std::shared_ptr<transaction> &t) noexcept  // also C26417 LVALUE_REF_SHARED_PTR
    : transaction_(t)
{}

可疑的建構函式優化 - 簡化:

action::action(std::shared_ptr<transaction> t) noexcept
    : transaction_(std::move(t))
{}