Создайте массив с размером N во время компиляции, передав N в конструкторе constexpr

Я пытаюсь сделать конечный автомат, который собирается во время компиляции. Я уже получил рабочую версию, используя множество параметров шаблона. Теперь я хочу уменьшить количество параметров шаблона и перенести часть его в конструкторы constexpr.

template<typename EventT, typename StateT>
class ConstStateMachine
{
public:
constexpr ConstStateMachine(const std::initializer_list<StateDefinition<EventT, StateT>>& states) :
_states{ states }
{
}

private:
const StateDefinition<EventT, StateT> _states[];
};

Код выше показывает упрощенную версию конечного автомата. Я хочу указать размер массива в конструкторе constexpr. Я знаю, я использую шаблоны в облаке и делаю что-то вроде этого:

template<typename EventT, typename StateT, typename ...States>
class ConstStateMachine
{
const std::tuple<States...> _states;
};

и разверните кортеж в списке инициализатора или что-то, но я не хочу никаких других параметров шаблона, кроме EventT и StateT.

Возможно ли это как-то?

0

Решение

Нет, это невозможно. По крайней мере, вам нужно будет добавить параметр шаблона размера.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]