Templates c+中模板参数的编译时边界+;0x

Templates c+中模板参数的编译时边界+;0x,templates,template-meta-programming,c++03,Templates,Template Meta Programming,C++03,下面是一个过于简化的类: template <unsigned x> class myArray { int getIndex(unsigned i) { return y[i]; } void setIndex(unsigned i, int v) { y[i] = v; } private: int y[x]; }; 但那太可怕了 有没有更优雅的方法来绑定模板参数,以便在编译时而不是运行时检查它 注意:如果这在c++03中是可能的,那么我需要该格式的

下面是一个过于简化的类:

template <unsigned x>
class myArray {
    int getIndex(unsigned i) { return y[i]; }
    void setIndex(unsigned i, int v) { y[i] = v; }
  private:
    int y[x];
};
但那太可怕了

有没有更优雅的方法来绑定模板参数,以便在编译时而不是运行时检查它

注意:如果这在
c++03
中是可能的,那么我需要该格式的语法(以防它与
c++11
不同)

更新 我得出了一个解决方案作为一个衍生的例子提供了以下所以后

C++11及以上版本 在C++11及更高版本中,有用于此目的的声明。然后,编译器在编译时检查条件。您可以在窗体中的类范围中使用它

template <unsigned x>
class myArray {
    static_assert(x > 0 && x <= 64, "array size in (0, 64]");
};
模板
类myArray{
静态断言(x>0&&x C++11及更高版本)
在C++11及更高版本中有用于此目的的声明。然后,编译器在编译时检查条件。您可以在窗体的类范围中使用它

template <unsigned x>
class myArray {
    static_assert(x > 0 && x <= 64, "array size in (0, 64]");
};
模板
类myArray{

static_assert(x>0&&x谢谢!我会调查,如果这个解决方案是我要找的,那么我会给你检查!谢谢!我会调查,如果这个解决方案是我要找的,那么我会给你检查!