关于一个模板的写法,该如何解决

关于一个模板的写法
原代码是:
typedef unsigned char HistGram[256];

HistGram var;
//...


现在要求数组长度用模板写,而以下方式肯定编译不过
template<size_t N>
typedef unsigned char HistGram[N];


参考老外写的依然不行
template<size_t N>
struct __HistGram {
typedef unsigned char _type[N];
};  //  这是老外的

#define __HistGram<(N)>::_type HistGram<(N)>  //  这是我加的


求写法,谢谢


------解决方案--------------------
老外写的那个可以,只不过你用错了,那个宏应该这样定义:

#define HISTGRAM( x ) __HistGram< ( x ) >::_type