decltype에서 이중 괄호를 사용한 유형 추론
C에서는 decltype 키워드를 사용하여 표현식의 유형을 결정할 수 있습니다. 이중 괄호와 함께 사용하면 혼란을 초래할 수 있는 미묘한 동작을 보입니다.
문제:
다음 코드 조각을 고려하세요.
<code class="cpp">const int&&& foo(); int i; struct A { double x; }; const A* a = new A(); decltype(foo()) x1 = i; // type is const int&&& decltype(i) x2; // type is int decltype(a->x) x3; // type is double decltype((a->x)) x4 = x3; // type is const double&</code>
네 번째 줄의 a->x에 괄호를 추가하면 결과 유형이 double에서 const double&로 변경되는 이유는 무엇입니까?
답변:
설명은 다음에 있습니다. decltype을 사용하여 유형을 추론하는 규칙. C 언어 표준에 따르면:
주어진 예에서:
따라서 a->x에 괄호를 추가하면 액세스된 멤버 유형에서 유형 공제가 멤버 자체에 대한 참조로 변경됩니다.
위 내용은 `decltype`에 이중 괄호를 사용하면 결과 유형이 변경되는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!