Re: [語法] [問題] 關於pointer of reinterpret_cast
※ 引述《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)
討論串 (同標題文章)