diff --git a/Framework/Core/include/Framework/TableBuilder.h b/Framework/Core/include/Framework/TableBuilder.h index f941bf29bd8c8..8eb0fcde11c4d 100644 --- a/Framework/Core/include/Framework/TableBuilder.h +++ b/Framework/Core/include/Framework/TableBuilder.h @@ -753,11 +753,12 @@ auto makeEmptyTable() return b.finalize(); } -template -auto makeEmptyTable(const char* name, framework::pack p) + +template +auto makeEmptyTable(const char* name) { TableBuilder b; - [[maybe_unused]] auto writer = b.cursor(p); + [[maybe_unused]] auto writer = b.cursor(P{}); b.setLabel(name); return b.finalize(); } @@ -772,7 +773,7 @@ auto spawner(std::shared_ptr const& fullTable, const char* name, o { using placeholders_pack_t = typename o2::aod::MetadataTrait::metadata::placeholders_pack_t; if (fullTable->num_rows() == 0) { - return makeEmptyTable(name, placeholders_pack_t{}); + return makeEmptyTable(name); } return spawnerHelper(fullTable, schema, framework::pack_size(placeholders_pack_t{}), projectors, name, projector); } @@ -791,7 +792,7 @@ auto spawner(std::shared_ptr const& fullTable, const char* name, e { using expression_pack_t = typename o2::aod::MetadataTrait::metadata::expression_pack_t; if (fullTable->num_rows() == 0) { - return makeEmptyTable(name, expression_pack_t{}); + return makeEmptyTable(name); } return spawnerHelper(fullTable, schema, framework::pack_size(expression_pack_t{}), projectors, name, projector); } @@ -805,12 +806,12 @@ auto spawner(std::vector>&& tables, const char* na } template -auto spawner(framework::pack, std::vector>&& tables, const char* name, expressions::Projector* projectors, std::shared_ptr& projector, std::shared_ptr const& schema) +auto spawner(framework::pack columns, std::vector>&& tables, const char* name, expressions::Projector* projectors, std::shared_ptr& projector, std::shared_ptr const& schema) { std::array labels{"original"}; auto fullTable = soa::ArrowHelpers::joinTables(std::move(tables), std::span{labels}); if (fullTable->num_rows() == 0) { - return makeEmptyTable(name, framework::pack{}); + return makeEmptyTable(name); } return spawnerHelper(fullTable, schema, sizeof...(C), projectors, name, projector); } diff --git a/Framework/Foundation/include/Framework/Pack.h b/Framework/Foundation/include/Framework/Pack.h index 4fcf796a3ec62..aad4abef56300 100644 --- a/Framework/Foundation/include/Framework/Pack.h +++ b/Framework/Foundation/include/Framework/Pack.h @@ -30,6 +30,9 @@ constexpr std::size_t pack_size(pack const&) return sizeof...(Ts); } +template +concept PackLike = requires (P &p) { o2::framework::pack_size(p); }; + template struct pack_element;