#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()
를 사용하는 경우는, 컴파일러는이 왜 삭제 기능을 사용하고 있습니다 '[_Tp = INT와] 무효 표준을 :: REF (const를 _Tp &&)'
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