왜 범용 참조는 rvalue 참조와 동일한 구문(T&&)을 공유합니까? ? 헷갈리지 않나요?
범용 참조(T&&)는 T를 "객체 유형" 또는 "참조 유형"으로 추론할 수 있습니다. rvalue가 전달되면 T는 int로 추론하여 int&& 매개변수를 생성합니다. lvalue가 전달되면 T는 int&로 추론하고 참조 축소 규칙으로 인해 int&로 축소됩니다.
T를 추론할 수 없는 경우(예: X::baz 예) 범용 참조가 아닙니다.
범용 참조와 rvalue 참조에 동일한 구문을 사용하면 템플릿 인수 추론과 참조 축소 규칙이 간소화됩니다. 제안된 조정을 통해 템플릿 매개변수를 참조 유형으로 추론하여 전달 문제를 해결할 수 있습니다.
T&&&&&, T@ 또는 T&42와 같은 대체 구문이 고려되었지만 거부되었습니다. 선언자 T&&&@가 실제 유형을 나타낼 수 없기 때문에 혼란을 야기했을 것입니다(항상 int&& 또는 int&를 참조함).
현재 구문은 더 넓은 유형 시스템에 맞춰 조정됩니다. T가 lvalue 참조인 경우, T&&도 그렇습니다. 규칙은 일관되며 불필요한 복잡성을 피합니다.
위 내용은 C가 참조 전달과 Rvalue 참조 전달에 동일한 구문(T&&)을 사용하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!