template unsigned char (& dimension_help_fun(T(&ts)[N]))[N]; 的含义

jia_xiaoxin 2008-09-24 11:17:13
今天看了一个帖子,但有些不理解,是用来计算数组的长度的.
template <typename T, size_t N>
unsigned char (& dimension_help_fun(T(&ts)[N]))[N];
#define DIM(a) (sizeof(dimension_help_fun(a)))


这个模板具体是怎么实现的,为什么只有原型也可以使用,尤其这两个[N]的含义是什么呢?而且VC6下编译出错,2005却正常.
分不够还可以加.
...全文
344 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
mabo321 2008-09-29
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 zmlovelx 的回复:]
unsigned char (& dimension_help_fun(T(&ts)[N]))[N];
函数名:dimension_help_fun
参数类型: T (&ts)[N],T,N是模板参数
返回值为一个存放N个unsigned char元素的数组的引用
[/Quote]

VC6.0 出错?? 是标准问题,还是编译器问题?

能把代码贴全些么??

期待高手 详解…………

waruqi 2008-09-29
  • 打赏
  • 举报
回复
静态数组大小决议,VC6.0不支持
taodm 2008-09-24
  • 打赏
  • 举报
回复
去看《Modern C++ Design》
另外,扔了VC6,别用它浪费生命了。
npuhuxl 2008-09-24
  • 打赏
  • 举报
回复
unsigned char (& dimension_help_fun(T(&ts)[N]))[N];
返回值:unsigned char (& r[N])
函数名:dimension_help_fun
参数类型: T (&ts)[N],T是模板参数,N也是模板参数制定为-...,-1,0,1,2,3....(需要确定值)




就呆在云上 2008-09-24
  • 打赏
  • 举报
回复
但是帖子地址呢?
给我也看看咯
matrixdwy 2008-09-24
  • 打赏
  • 举报
回复
看了原帖我感觉真妙
就呆在云上 2008-09-24
  • 打赏
  • 举报
回复
整个的是定义个数组,不是定义函数,函数只是返回一个对象,分解来看:
dimension_help_fun(T(&ts)[N])整个是一个函数,他要传入一个一维的数组,而且要求传入的是一个T类型的也是一维的,有N个值的数组,传入的是整个数组的引用,他返回一个对象,比如是a
那么最后你得到的就是:
unsigned char (& a)[N];
那么dimension_help_fun这个函数返回的对象就要求是unsigned char 类型,N值的数组的引用,这个是c++里面的很孤僻的知识点了
反正这里定义的是一个数组拉
帅得不敢出门 2008-09-24
  • 打赏
  • 举报
回复
楼主看看原贴,原贴就说的很清楚了.
原贴的最后是这样的
PS:
这个函数接收一个数组引用ts,返回一个unsigned char型并具有N个元素的数组引用。
帅得不敢出门 2008-09-24
  • 打赏
  • 举报
回复
unsigned char (& dimension_help_fun(T(&ts)[N]))[N];
函数名:dimension_help_fun
参数类型: T (&ts)[N],T,N是模板参数
返回值为一个存放N个unsigned char元素的数组的引用


yshuise 2008-09-24
  • 打赏
  • 举报
回复
请楼主把代码贴全。

64,281

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧