我有两个别名来使用智能指针管理玩具状态机的状态集合:
using States = std::tuple<std::shared_ptr<State1>, std::shared_ptr<State2>>;
using CurrentState = std::variant<std::shared_ptr<State1>, std::shared_ptr<State2>>;
上面的例子有两个状态,但我想要 40 个。我自己的教育问题是:如何使用可变参数模板(或任何其他策略)来避免在两个别名中重复 40 个长的类型列表?我试图避免使用外部 TMP 库。
可能相关的问题:我希望这些别名定义在其结构下的对象拥有这些状态。如果我担心我的机器中的每个状态都太大而无法将它们全部保存在堆栈中,那么使用智能指针是解决问题的方法吗?希望这个问题有意义。