我有一个带有两个非类型模板参数的 C++ 类:
类型为 size_t 的维度和对象 vector 的常量引用。
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()
预先感谢您提出任何建议。
最佳答案
vector
是一个动态容器,因此它的大小取决于您在运行时如何使用它。不幸的是,这意味着您无法执行编译时检查来实现您想要的。
std::array
可能更适合这种情况,因为它的大小在编译时是固定的。
关于C++非类型模板参数编译时检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19837491/