#pragma once #include namespace seq { namespace ir { namespace util { /// Utility function to strip parameter packs. /// @param dst the destination vector /// @param first the value template void stripPack(std::vector &dst, Desired &first) { dst.push_back(&first); } /// Utility function to strip parameter packs. /// @param dst the destination vector template void stripPack(std::vector &dst) {} /// Utility function to strip parameter packs. /// @param dst the destination vector /// @param first the value /// @param args the argument pack template void stripPack(std::vector &dst, Desired &first, Args &&...args) { dst.push_back(&first); stripPack(dst, std::forward(args)...); } } // namespace util } // namespace ir } // namespace seq