decltype((...)) の二重括弧は何を意味しますか?
C 標準では decltype(( ...)) FCD のセクション 7.6.1.2/4 の構文。次の例に示すように、この構文を使用すると、プログラマは式の型を推測できます。
<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>
decltype((a->x)) の式を囲む括弧の存在により、大きな違いが生じます。推測されたタイプで。括弧がないと、型は単純に double になり、メンバー アクセス (a->x) の戻り値の型を示します。
ただし、括弧を使用すると、式は左辺値になります。標準によれば、e が左辺値の場合、decltype(e) は T& になります。ここで、T は e の型です。この場合、T は double であり、推定された型は const double& です。
したがって、decltype((a->x)) のかっこは、式を左辺値として扱うように推定を強制し、結果は次のようになります。括弧が省略された場合とは異なる型になります。
以上が`decltype((...))` のかっこの影響は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。