주제는 이전 에 논의 되었지만 중복 된 것은 아닙니다.
누군가 decltype(a)
와와 의 차이점에 대해 물을 때 decltype((a))
일반적인 대답은 a
변수 (a)
입니다. 이 답변이 만족스럽지 않습니다.
먼저 a
표현도 있습니다. 기본 표현식 의 옵션 에는 다음이 포함됩니다.
- ( 표현 )
- 아이디 표현
더 중요한 것은 decltype에 대한 문구는 괄호를 매우 명확하게 고려한다는 것입니다 .
For an expression e, the type denoted by decltype(e) is defined as follows:
(1.1) if e is an unparenthesized id-expression naming a structured binding, ...
(1.2) otherwise, if e is an unparenthesized id-expression naming a non-type template-parameter, ...
(1.3) otherwise, if e is an unparenthesized id-expression or an unparenthesized class member access, ...
(1.4) otherwise, ...
그래서 질문은 남아 있습니다. 괄호가 다르게 취급되는 이유 는 무엇 입니까? 기술 문서 나위원회 토론에 익숙한 사람이 있습니까? 괄호에 대한 명시적인 고려는 이것이 감독이 아니라고 생각하게하므로 누락 된 기술적 이유가 있어야합니다.
(a)
표현a
이며, 표현 과 변수"입니다.