2013-03-03 1 views

답변

7

용어 universal reference 스콧 마이어스에 의해 만들어 용어가 정상를 rvalue 참조, 템플릿 코드 즉 int&&과를 rvalue 참조, 즉 T&& 사이의 차이를 확인하는 것입니다. 이것은 템플릿 코드와 관련하여 참조 축소 규칙 때문에 중요합니다.이 용어는 강의를 돕기 위해 사용됩니다. unversal reference이라고하는 이유는 무엇이라도 바인딩 할 수 있기 때문입니다.

은 그냥 C++ 언어의 universal reference 같은 것은 없다는 것을 명심 Function&&는 지금까지 언어에 관한 한 같은 를 rvalue 참조입니다. 그러나 Scott Meyer의 전문 용어 인 Function&&은 예에서 universal reference입니다.

+0

+1 같은 스크립트에서 같은 시간에 입력하는 것과 거의 같습니다. 잘 했어. –

+0

고마워, +1 또한 너에게 그 대답을 읽는 것으로부터 대부분 배웠기 때문에. –

+1

gah, 너무 늦었습니다. 코드 테스트를하는 데 시간을 낭비했습니다. D –

3

는 & & 보편적 인 기준입니까? 의

정렬. 부활절 토끼와 산타 클로스처럼 실제로 보편적 인 참조 (미안 내가 당신을 위해 버릇 없게 기른)과 같은 것이 없다. 용어 범용 참조은 표준에 표시되지 않습니다. 스콧 마이어스 (Smith Meyers)는 "특별 공제 규칙 (special deduction rules)"이 활성화되었을 때 템플레이트 된 평가 기준 (templated rvalue references)을 설명하기 위해 용어를 사용합니다.

표시 내용 유효한 코드입니다. 이 경우 특별 공제 규정이 적용됩니다. 즉, lvalue 인수 Af에 전달하면 FunctionA&으로 추론합니다. Scott의 정의에 따르면 그렇습니다. Function은 "보편적 인 참조"입니다.

1

Looks like it, std::forward<Function>은 함수에서 호출 될 때 인수 유형을 올바르게 전달합니다.