Skip to content

Commit c214ad1

Browse files
committed
make it compile with gcc 14.2
1 parent 22f7bf5 commit c214ad1

File tree

1 file changed

+15
-10
lines changed
  • Framework/Core/include/Framework

1 file changed

+15
-10
lines changed

Framework/Core/include/Framework/ASoA.h

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1230,29 +1230,34 @@ template <typename T>
12301230
concept is_iterator = framework::base_of_template<TableIterator, T> || framework::specialization_of_template<TableIterator, T>;
12311231

12321232
template <typename T>
1233-
concept with_originals = requires() {
1233+
concept with_originals = requires {
12341234
T::originals.size();
12351235
};
12361236

12371237
template <typename T>
1238-
concept with_sources = requires() {
1238+
concept with_sources = requires {
12391239
T::sources.size();
12401240
};
12411241

12421242
template <typename T>
12431243
concept with_base_table = not_void<typename aod::MetadataTrait<o2::aod::Hash<T::ref.desc_hash>>::metadata::base_table_t>;
12441244

1245+
template <size_t N1, std::array<TableRef, N1> os1, size_t N2, std::array<TableRef, N2> os2>
1246+
consteval bool is_compatible()
1247+
{
1248+
return []<size_t... Is>(std::index_sequence<Is...>){
1249+
return ([]<size_t... Ks>(std::index_sequence<Ks...>){
1250+
constexpr auto h = os1[Is].desc_hash;
1251+
using H = o2::aod::Hash<h>;
1252+
return (((h == os2[Ks].desc_hash) || is_ng_index_equivalent_v<H, o2::aod::Hash<os2[Ks].desc_hash>>) || ...);
1253+
}(std::make_index_sequence<N2>()) || ...);
1254+
}(std::make_index_sequence<N1>());
1255+
}
1256+
12451257
template <with_originals T, with_originals B>
12461258
consteval bool is_binding_compatible_v()
12471259
{
1248-
return []<size_t... Is>(std::index_sequence<Is...>) {
1249-
return ([]<size_t... Ks>(std::index_sequence<Ks...>) {
1250-
constexpr auto thash = T::originals[Is].desc_hash;
1251-
using tHash = o2::aod::Hash<T::originals[Is].desc_hash>;
1252-
return (((thash == B::originals[Ks].desc_hash) || is_ng_index_equivalent_v<tHash, o2::aod::Hash<B::originals[Ks].desc_hash>>) || ...);
1253-
}(std::make_index_sequence<B::originals.size()>()) ||
1254-
...);
1255-
}(std::make_index_sequence<T::originals.size()>());
1260+
return is_compatible<T::originals.size(), T::originals, B::originals.size(), B::originals>();
12561261
}
12571262

12581263
template <typename T, typename B>

0 commit comments

Comments
 (0)