[問題] decltype(auto) 合併用法差異

看板C_and_CPP作者 (Charlott.HonG)時間7年前 (2017/04/04 17:52), 7年前編輯推噓5(505)
留言10則, 2人參與, 最新討論串1/1
想請問他們有什麼不一樣嗎 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://www.ptt.cc/bbs/C_and_CPP/M.1491299563.A.656.html

04/04 18:00, , 1F
看effective modern c++有說
04/04 18:00, 1F

04/04 18:00, , 2F
簡單說 auto 是一個"實體" decltype不一定
04/04 18:00, 2F

04/04 18:01, , 3F
如果是reference型態 decltype會判斷成ref
04/04 18:01, 3F

04/04 18:08, , 4F
至於另一個問題stackoverflow.com/questions/11302981
04/04 18:08, 4F

04/04 18:13, , 5F
有兩個方法判斷 一是你對語法夠熟 二是靠編譯器警告
04/04 18:13, 5F
好的 感謝~

04/04 20:10, , 6F
auto倒不是絕對不能做為返回值,只要你知道會產生什
04/04 20:10, 6F

04/04 20:10, , 7F
04/04 20:10, 7F

04/04 20:12, , 8F
至於原文開頭,兩個是沒什麼不同,後置式的寫法主要是
04/04 20:12, 8F

04/04 20:12, , 9F
為了用在涉及參數列的推導
04/04 20:12, 9F

04/04 20:17, , 10F
至於第二個問題,這個規則以前還真沒注意過
04/04 20:17, 10F
好的 感謝~ ※ 編輯: hunandy14 (36.238.116.36), 04/05/2017 00:24:11
文章代碼(AID): #1OusphPM (C_and_CPP)