ホームページ > バックエンド開発 > C++ > `decltype(...)` は参照を返さないのに、`decltype((...))` は参照を返すのはなぜですか?

`decltype(...)` は参照を返さないのに、`decltype((...))` は参照を返すのはなぜですか?

Mary-Kate Olsen
リリース: 2024-11-02 04:31:30
オリジナル
1080 人が閲覧しました

 Why Does `decltype((...))` Return a Reference While `decltype(...)` Doesn't?

decltype((...)) での括弧の重要性を理解する

decltype((...) での二重括弧の使用)) C 17 Function Definition Concurrency (FCD) の例で明らかなように、decltype 演算子によって推定される型に微妙ですが重要な影響を与えます。

括弧で囲まれていない識別子 (id-expression) に適用される場合またはクラス メンバーのアクセス式の場合、decltype は参照されるエンティティの型を返します。ただし、式が左辺値 (メモリの場所を参照する変数または式) の場合、decltype はエンティティの型の前に追加の参照 (&) を付加します。

FCD の例では:

  • decltype(a->x) は、クラス インスタンス (*a) のメンバー変数 (double x) を参照し、メンバーの基本型を返します: double.
  • decltype((a- >x)) は、同じメンバー アクセス式を括弧で囲み、左辺値として扱います。結果として、decltype は、double 型への参照である lvalue の型を返します: const double&.

以上が`decltype(...)` は参照を返さないのに、`decltype((...))` は参照を返すのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート