考慮以下代碼:這是std :: ref行爲邏輯?
#include <iostream>
#include <functional>
int xx = 7;
template<class T>
void f1(T arg)
{
arg += xx;
}
template<class T>
void f2(T arg)
{
arg = xx;
}
int main()
{
int j;
j=100;
f1(std::ref(j));
std::cout << j << std::endl;
j=100;
f2(std::ref(j));
std::cout << j << std::endl;
}
執行時,該代碼輸出
107
100
我本來期望的第二個值是7,而不是100
我缺少什麼?
引用包裝是可復位的,所以分配引用的內容,而不是引用的對象。 –
優秀的問題! – vsoftco