Re: [語法] [問題] 關於pointer of reinterpret_cast

看板C_and_CPP作者 (我愛阿蓉)時間16年前 (2009/03/31 17:06), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/4 (看更多)
※ 引述《redluna (Occlumen)》之銘言: : 我們老師用了一個我看不懂得用法 : template<typename T,int n> T sum(T (&a)[n]){ : return a[0]+sum(reinterpret_cast<T(&)[n-1]>(a[1])); : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ : } : 我比較不懂的是這裡 : 是不是和template的展開有關 : T(&) 是什麼意思? : 還是說要(&)(n)這樣讀? : 那和T*有甚麼不同? 你好: 我是因為研究了你這問題 才會發那些問題文章 我想T(&)[]就是如推文說的 cast成陣列的 reference 請參考這 http://www.cnblogs.com/oomusou/archive/2007/02/09/646021.html 問題來了 你這個範例compile根本過不了 問題出在<T(&)[n-1]> rror C2265: 'abstract declarator' : 參考至大小為零的陣列不合法 改成<T(&)[n]>他就不會compile error了 在此想請問 為什麼compiler會去判斷這件事呢? recursive不是runtime作的嘛 這邊怎麼會跑出錯誤... 這是否可以解釋成 這種template寫法就是不能recursive? 不管我設什麼終止條件他都是在compile time給我錯誤訊息 請問有人知道為什麼嘛? 問題有點多 請各位多多指教 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.113.207.211 ※ 編輯: QQ29 來自: 140.113.207.211 (04/01 01:14)
文章代碼(AID): #19qasE_L (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #19qasE_L (C_and_CPP)