У меня есть класс C ++ с двумя нетиповыми параметрами шаблона:
Измерение типа size_t и константная ссылка на вектор объектов.
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
может быть более подходящим в этом случае, так как его размер фиксируется во время компиляции.
Других решений пока нет …