我试图创建一个在编译时构建的状态机。我已经通过使用大量模板参数获得了工作版本。现在我想减少模板参数的数量,并将其中的一部分移动到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)
没有。这是不可能的。您至少需要添加一个大小模板参数。