作者lovejomi (JOMI)
看板C_and_CPP
标题[问题] const reference是什麽?
时间Fri Jul 13 18:22:15 2018
看到一篇文章
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://webptt.com/cn.aspx?n=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
1F:→ Sidney0503: So being氲onst氽oesn’t say much for a reference, 07/13 18:58
2F:→ Sidney0503: since they always乸re氲onst, since they cannot reb 07/13 18:59
3F:→ Sidney0503: 这种语言我也看不懂 07/13 18:59
4F:→ Lipraxde: So being const doesn’t say much for a reference, s 07/13 19:23
5F:→ Lipraxde: ince they always are const, since they cannot rebin 07/13 19:23
6F:→ Lipraxde: d. This implies that const (int&) is effectively th 07/13 19:23
7F:→ Lipraxde: e same type as int&. 07/13 19:23
8F:→ Lipraxde: 大概是这样? 07/13 19:23
10F:→ shadow0326: 他是一层一层把语意消掉,T& const 等价於 T& 07/13 21:44
11F:→ shadow0326: 而 (T&)& 等价於 T&,所以得到 (T&) const & 等价於T& 07/13 21:45
12F:→ lovejomi: 我也不知道为什麽手机贴上都正确 送出就变乱码...moptt 07/13 23:41
13F:→ lovejomi: 所以简单讲就是int&& collapse 成int&, 然後int&const没 07/13 23:44
14F:→ lovejomi: 意义,所以const直接忽略? 07/13 23:44
15F:→ sarafciel: const (int&) & =>const 修饰 (int &) =>reference自带 07/14 00:17
16F:→ sarafciel: const语意,去掉const =>int & & =>做collapse=>int &( 07/14 00:17
17F:→ sarafciel: 相当於 int const *) 我感觉是这样 07/14 00:17