/*----------------------------------------------------------------------------*/ /* Copyright (c) 2019 FIRST. All Rights Reserved. */ /* Open Source Software - may be modified and shared by FRC teams. The code */ /* must be accompanied by the FIRST BSD license file in the root directory of */ /* the project. */ /*----------------------------------------------------------------------------*/ #pragma once #include #include #include #include "frc2/command/Command.h" namespace frc2 { /** * CRTP implementation to allow polymorphic decorator functions in Command. * *

Note: ALWAYS create a subclass by extending CommandHelper, * or decorators will not function! */ template >> class CommandHelper : public Base { using Base::Base; public: CommandHelper() = default; protected: std::unique_ptr TransferOwnership() && override { return std::make_unique(std::move(*static_cast(this))); } }; } // namespace frc2