12 #pragma warning(disable : 4521)
17 #include <type_traits>
21 #include <frc/ErrorBase.h>
22 #include <frc/WPIErrors.h>
23 #include <wpi/ArrayRef.h>
25 #include "frc2/command/CommandGroupBase.h"
26 #include "frc2/command/CommandHelper.h"
30 const size_t invalid_index = std::numeric_limits<size_t>::max();
39 :
public CommandHelper<CommandGroupBase, SequentialCommandGroup> {
49 std::vector<std::unique_ptr<Command>>&& commands);
58 template <
class... Types,
59 typename = std::enable_if_t<std::conjunction_v<
60 std::is_base_of<Command, std::remove_reference_t<Types>>...>>>
62 AddCommands(std::forward<Types>(commands)...);
73 template <
class... Types,
74 typename = std::enable_if_t<std::conjunction_v<
75 std::is_base_of<Command, std::remove_reference_t<Types>>...>>>
76 void AddCommands(Types&&... commands) {
77 std::vector<std::unique_ptr<Command>> foo;
78 ((void)foo.emplace_back(std::make_unique<std::remove_reference_t<Types>>(
79 std::forward<Types>(commands))),
81 AddCommands(std::move(foo));
88 void End(
bool interrupted)
override;
95 void AddCommands(std::vector<std::unique_ptr<Command>>&& commands)
final;
98 size_t m_currentCommandIndex{invalid_index};
99 bool m_runWhenDisabled{
true};