看板 C_and_CPP 關於我們 聯絡資訊
看到一篇文章 https://www.fluentcpp.com/2018/07/13/the-incredible-const-reference-that-isnt- const/ 我覺得蠻有趣的 其中一段提到 The get() method returns a const T&, with T coming from template T. In our sec ond case, T is int&, so const T& is const (int&) & 這邊。const (int&) & 為什麼他可以直接看出這const 是修飾reference (int&) & const 然後就是這邊感覺多了一個& 也許他這段有解釋 So being氲onst氽oesn’t say much for a reference, since they always乸re氲onst, since they cannot rebind. This implies that氲onst (int&)湶s effectively the s ame type as湶nt&. 但實在看不是很懂 這邊能不能套用forwarding reference的規則 int& & collapse成 int&, 所以變成 int & const ,我不確定,而且覺得不能這樣想 而且正常試圖寫 https://ideone.com/95tBGJ 無法寫得出這個語意. 請問各位有什麼規則需要釐清的嗎 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 39.8.199.223 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1531477341.A.D50.html ※ 編輯: lovejomi (39.8.199.223), 07/13/2018 18:26:31 ※ 編輯: lovejomi (39.8.199.223), 07/13/2018 18:35:48
Sidney0503: So being氲onst氽oesn’t say much for a reference, 07/13 18:58
Sidney0503: since they always乸re氲onst, since they cannot reb 07/13 18:59
Sidney0503: 這種語言我也看不懂 07/13 18:59
Lipraxde: So being const doesn’t say much for a reference, s 07/13 19:23
Lipraxde: ince they always are const, since they cannot rebin 07/13 19:23
Lipraxde: d. This implies that const (int&) is effectively th 07/13 19:23
Lipraxde: e same type as int&. 07/13 19:23
Lipraxde: 大概是這樣? 07/13 19:23
shadow0326: 亂碼那段是說這件事 https://tinyurl.com/y8gkkcng 07/13 21:42
shadow0326: 他是一層一層把語意消掉,T& const 等價於 T& 07/13 21:44
shadow0326: 而 (T&)& 等價於 T&,所以得到 (T&) const & 等價於T& 07/13 21:45
lovejomi: 我也不知道為什麼手機貼上都正確 送出就變亂碼...moptt 07/13 23:41
lovejomi: 所以簡單講就是int&& collapse 成int&, 然後int&const沒 07/13 23:44
lovejomi: 意義,所以const直接忽略? 07/13 23:44
sarafciel: const (int&) & =>const 修飾 (int &) =>reference自帶 07/14 00:17
sarafciel: const語意,去掉const =>int & & =>做collapse=>int &( 07/14 00:17
sarafciel: 相當於 int const *) 我感覺是這樣 07/14 00:17