ホームページ >バックエンド開発 >C++ >`decltype((...))` のかっこの影響は何ですか?

`decltype((...))` のかっこの影響は何ですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-11-03 05:38:30383ブラウズ

 What's the Impact of Parentheses in `decltype((...))`?

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。