int a[0]; 晕~该怎么处理

int a[0]; 晕~~~~~~~~~~~~~~~~~
int   a[0];   编译器不发生编译错误  
请问以下代码在调用构造函数创建对象的时候如果
是这样调用:“stack <int   0>   st”必然生成一个   int   item[0]   的错误数组
但是不编译错误,   请问怎么阻止创建st对象

template <typename   T,int   n>    
class   stack   {
  private:
                  T   item[n];      
 
 

  public:
                    stack(){}                                                                                                        
    。。。。。。。。。。。。。。。。。。。。。。
}


------解决方案--------------------
它在语法上存在问题?
------解决方案--------------------
C99 新增加的内容: 零成员数组。

它是符合标准的,
自然就是对的。

如果你不希望支持这个特性,
使用 C89 编译器 ~
比如 TC 2.0 (找个老一点的就可以了, 不过 ....)
------解决方案--------------------
貌似 c++ 标准没有这个吧, C99 是 C 的, 貌似这个不算, 如果可以编译过这个的编译器貌似不符合标准 ...
------解决方案--------------------
刚查的MSDN
具有零下标的数组声明仅对类成员、结构成员或联合成员合法,而且仅可与 Microsoft 扩展 (/Ze) 一起使用。
这个还真是对的
class base
{
int a[0];
};