kod parçası yazılır orada [] konteyner çağıran operatör tarih:C++ std :: ileri öğenin 3'te kitabında "Etkili Modern C++", In
template<typename Container, typename Index>
decltype(auto)
authAndAccess(Container&& c, Index i)
{
authenticateUser();
return std::forward<Container>(c)[i];
}
Sana nedenini anlamıyorum std::forward
numaralı telefonu arayın c
, bir rvalue başvurusuysa, bir lvalue yerine bir renginde operator[]
'u çağırmak için ne değişir? Benim için c[i]
yeterli olmalıdır.
PS: Ben değişken olarak bir fonksiyonun bir parametre olduğu zaman std::forward
amacını anlamak:
template<typename T, typename... Ts>
std::unique_ptr<T> make_unique(Ts&&... params)
{
return std::unique_ptr<T>(new T(std::forward<Ts>(params)...));
}
Derleyici, c'nin r değeri ref olduğunu bildiğini, && dizininin şablon parametrelerinde ya da bir şeyleri özlediğimde geçerli olacağını biliyor muyum? – Incomputable
c, değişken ayarlandıktan sonra bir değer olur. – Thomas