作者hunandy14 (Charlott.HonG)
看板C_and_CPP
標題[問題] decltype(auto) 合併用法差異
時間Tue Apr 4 17:52:39 2017
想請問他們有什麼不一樣嗎
auto fun() -> decltype(auto){}
decltype(auto) fun(){}
然後有看到說不可以使用auto當作返回值,
實際測試一下編譯是可以過的會有什麼後果嗎?
測試代碼,只是列舉最簡單情況
看不出差異,有什麼情況一定只能用哪個嗎
代碼:
http://ideone.com/nHiXmH
然後為什麼繼承的時候,取一個別名沒辦法透過auto取得
代碼:
http://ideone.com/616q7s
怎麼區別什麼時候不能用auto呢?
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.238.116.36
※ 文章網址: https://webptt.com/m.aspx?n=bbs/C_and_CPP/M.1491299563.A.656.html
1F:推 Sidney0503: 看effective modern c++有說 04/04 18:00
2F:→ Sidney0503: 簡單說 auto 是一個"實體" decltype不一定 04/04 18:00
3F:→ Sidney0503: 如果是reference型態 decltype會判斷成ref 04/04 18:01
4F:推 Sidney0503: 至於另一個問題stackoverflow.com/questions/11302981 04/04 18:08
5F:→ Sidney0503: 有兩個方法判斷 一是你對語法夠熟 二是靠編譯器警告 04/04 18:13
好的 感謝~
6F:推 loveflames: auto倒不是絕對不能做為返回值,只要你知道會產生什 04/04 20:10
7F:→ loveflames: 麼 04/04 20:10
8F:推 loveflames: 至於原文開頭,兩個是沒什麼不同,後置式的寫法主要是 04/04 20:12
9F:→ loveflames: 為了用在涉及參數列的推導 04/04 20:12
10F:推 loveflames: 至於第二個問題,這個規則以前還真沒注意過 04/04 20:17
好的 感謝~
※ 編輯: hunandy14 (36.238.116.36), 04/05/2017 00:24:11