>백엔드 개발 >C++ >왜 `decltype((...))`은 참조를 반환하지만 `decltype(...)`은 참조를 반환하지 않습니까?

왜 `decltype((...))`은 참조를 반환하지만 `decltype(...)`은 참조를 반환하지 않습니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-11-02 04:31:301065검색

 Why Does `decltype((...))` Return a Reference While `decltype(...)` Doesn't?

decltype((...))에서 괄호의 중요성 이해

decltype((...)에서 이중 괄호 사용 ))는 C 17 FCD(함수 정의 동시성)의 예에서 알 수 있듯이 decltype 연산자로 추론된 유형에 미묘하지만 중요한 영향을 미칩니다.

괄호로 묶이지 않은 식별자(id-expression)에 적용하는 경우 또는 클래스 멤버 액세스 표현식인 decltype은 참조된 엔터티의 유형을 반환합니다. 그러나 표현식이 lvalue(메모리 위치를 참조하는 변수 또는 표현식)인 경우 decltype은 엔터티 유형 앞에 추가 참조(&)를 접두사로 붙입니다.

FCD 예에서:

  • decltype(a->x)는 클래스 인스턴스(*a)의 멤버 변수(이중 x)를 참조하여 멤버의 기본 유형인 double을 반환합니다.
  • decltype((a- >x)) 동일한 멤버 액세스 표현식을 괄호 안에 넣어 lvalue로 처리합니다. 결과적으로 decltype은 double 유형인 const double&에 대한 참조인 lvalue 유형을 반환합니다.

위 내용은 왜 `decltype((...))`은 참조를 반환하지만 `decltype(...)`은 참조를 반환하지 않습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.