#include<iostream>
#include<utility>
#include<tuple>
#include<functional>
using namespace std;
int main()
{
int i = 0;
auto p = make_pair(ref(i), ref(i++));
p.first++;
p.second++;
cout << "i = " << i << endl;
}
例如,如果我使用ref()
這樣,編譯器會說爲何我使用已刪除的功能 '無效的std :: REF(常量_TP &&)[與_TP = INT]'
use of deleted function 'void std::ref(const _Tp&&) [with _Tp = int]'
但是,如果我的代碼是繼
#include<iostream>
#include<utility>
#include<tuple>
#include<functional>
using namespace std;
int main()
{
int i = 0;
auto p = make_pair(ref(i), ref(++i));
p.first++;
p.second++;
cout << "i = " << i << endl;
}
我將會成功輸出i = 3
,所以我不明白爲什麼我得到這麼不同的答案。
'ref(i ++)' - 引用臨時,'++ i'返回原始變量的引用 – xinaiz
@BlackMoses:請在答案部分中回答。 –
我非常感謝,經過反思後,我認爲ref(i ++)是一個臨時的參考非常合理 – Yyh