首頁 >後端開發 >C++ >為什麼 `decltype((...))` 回傳引用,而 `decltype(...)` 不回傳引用?

為什麼 `decltype((...))` 回傳引用,而 `decltype(...)` 不回傳引用?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-11-02 04:31:301065瀏覽

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

理解decltype((...)) 中括號的意義

decltype((...) 中雙號括號的使用) ) 對decltype 運算子推導的類型有微妙但重要的影響,如C 17 函數定義並發(FCD) 的範例所示。

當應用於不帶括號的識別碼(id 表達式)或類別成員存取表達式,decltype 傳回引用實體的類型。但是,當表達式是左值(引用記憶體位置的變數或表達式)時,decltype 在實體類型之前會新增一個附加引用 (&)。

在FCD 範例中:

  • decltype(a->x) 引用類別實例(*a) 的成員變數(double x),從而傳回該成員的基本型別: double。
  • decltype((a- >x)) 將相同的成員存取表達式包裝在括號內,將其視為左值。結果,decltype 傳回左值的類型,它是 double 類型的參考:const double&.

以上是為什麼 `decltype((...))` 回傳引用,而 `decltype(...)` 不回傳引用?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn