#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()
这样使用,编译器会说
使用已删除的函数 '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
,所以我不明白为什么我会得到如此不同的答案。