C ++非类型模板参数编译时检查

时间:2013-11-07 13:43:00

标签: c++ templates parameters non-type

我有一个带有两个非类型模板参数的C ++类:

size_t类型的维度和对象向量的const引用。

template <size_t DIMENSION, const std::vector<Tuple>& BORDERS>
class Rule {
public:

  Rule(const std::vector<Tuple>& ranges, const Action& action) :
      ranges_(ranges),
      action_(action) {};

private:

  std::vector<Tuple> ranges_;
  Action action_;
};

是否有可能在编译时确保满足以下条件?

DIMENSION == BORDERS.size()

提前感谢您提出任何建议。

1 个答案:

答案 0 :(得分:1)

vector是一个动态容器,因此它的大小取决于您在运行时如何使用它。不幸的是,这意味着您无法进行编译时检查以实现您的目标。

在这种情况下,

std::array可能更合适,因为它的大小在编译时是固定的。