作者QQ29 (我爱阿蓉)
看板C_and_CPP
标题Re: [语法] [问题] 关於pointer of reinterpret_cast
时间Wed Apr 1 01:06:21 2009
※ 引述《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)