decltype(a)
との違いについて質問された場合decltype((a))
、通常の答えは- a
は変数で(a)
あり、は式です。私はこの答えに満足できないと思います。
まず、a
表現もです。一次式のオプションには、特に-
- (式)
- id式
さらに重要なことに、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
、式であり、変数である」ということです。