4
は、コードのこの部分を書かれているが[]コンテナ呼び出し演算子に:は、C++のstd ::前方項目3の著書「効果的な近代的なC++」では、
template<typename Container, typename Index>
decltype(auto)
authAndAccess(Container&& c, Index i)
{
authenticateUser();
return std::forward<Container>(c)[i];
}
私はあなたの理由を理解していませんstd::forward
に電話しますか? c
が値の参照である場合、左辺値ではなく右辺値でoperator[]
を呼び出すにはどうなりますか?私にとってはc[i]
で十分でしょう。
PS:[]コンテナのオペレータは右辺値と左辺値のためにオーバーロードされている可能性があります
template<typename T, typename... Ts>
std::unique_ptr<T> make_unique(Ts&&... params)
{
return std::unique_ptr<T>(new T(std::forward<Ts>(params)...));
}
私はコンパイラがcがrvalue refであることを知っていると思いますが、&&がテンプレートパラメータにある場合、あなたの答えは適用可能でしょうか? – Incomputable
cは、変数が設定された後に左辺値になります。 – Thomas