template <typename T>
void myswap(T a,T b)
{
T temp = a;
a = b;
b = temp;
}
int main()
{
int m(20),n(30);
myswap(ref(m),ref(n));
//m is still 20 and n is still 30
}
Tại sao giá trị của m và n không thay đổi? Chuyển một giá trị được bọc trong std::ref
đến một hàm INCREMENT dẫn đến thay đổi giá trị trong biến ban đầu (biến trong khung ngăn xếp gọi hàm INCREMENT). Hoặc, việc sử dụng std::ref
có bị hạn chế/giới hạn không?std :: chức năng ref và swap dường như không hoạt động tốt với nhau
Hoặc sử dụng 'std :: swap' – 101010
Câu đầu tiên hơi gây hiểu nhầm.Tất nhiên 'std :: ref' không giới hạn trong thư viện chuẩn (vì bạn cũng lưu ý nó sau nó) –