為什麼const decltype會有問題?

時間 2021-06-03 07:24:17

1樓:

因為前者是 reference to constant int

後者是 constant reference to int

但 reference 怎麼能是 const 的呢?感覺編譯器出錯了……

2樓:邱昊宇

因為 z 的型別是 int& 而不是 int const&。

如果問題變成這樣,估計會比較好理解:

typedef

int*

pointer

;const

pointer

foo;

// 這裡的 foo 是什麼型別?

這裡 foo 的型別是 int * const 而不是 const int *

const decltype((cj)) 中,const 修飾的是 decltype((cj)),而 decltype((cj)) 是 int&。

也就是說,題目中的 const decltype((cj)) 其實是 int& const z 而非 int const& z。

非 const 左值引用可以繫結左值(cj),但無法繫結右值(42)。

至於 int& const 裡的 const 為什麼被忽略了,因為引用本來就無法被修改,所以寫了等於白寫。

3樓:

c++11 - 'const decltype((a))' does not declare a const reference?

為什麼要重男輕女,為什麼?

Stunk 簡單說說國內重男輕女的假象 嫁出去的女兒潑出去的水 這是一句俗話,深入人心 現代社會,物質生產跟上來了,女兒們開始反哺原生家庭了,於是也出現了農村地區殺男嬰的故事 先說說古代為何 重男輕女 因為女兒不顧原生家庭 在物質匱乏的古代,生存本來就是一件難事,讓女人來顧家是不可能的 怎麼得出這個...

為什麼那麼焦慮?為什麼那麼勢利?為什麼那麼急於成功?

個人感覺最重要的是人在社會中的安全感。其實真不是每個人都那麼地渴望成功,而且成功的定義本來就是多種多樣的。但在中國,如果你沒有達到廣泛定義上的 成功 你可能會有以下的結果 你可能在城市中會隨時沒有安身之所,你可能會遭受不公但投訴無門,你的父母至親可能患病也得不到最基本救助,你的孩子可能得不到平等的教...

我為什麼是我?為什麼?

主角戲 馬克思說過,人是所有社會關係的總和,所以首先,你作為人來說,你只是你周圍所有關係的總和,你的偏執,你的瘋狂,你的愛情,你的孝順,你的所有人生觀,價值觀,世界觀,宇宙觀,形成了你。但是你錯誤的把這些當成了你,其實這些都是人的錯誤認識,心 的本體,也就是能生萬物,能生萬法的這個東西沒有被發現之前...