@@ -241,6 +241,9 @@ concept not_void = requires { !std::same_as<T, void>; };
241241template <typename C>
242242concept persistent = requires (C c) { c.mColumnIterator ; };
243243
244+ template <typename C>
245+ constexpr bool is_persistent_v = persistent<C>;
246+
244247template <typename C>
245248using is_persistent_t = std::conditional_t <persistent<C>, std::true_type, std::false_type>;
246249
@@ -1634,34 +1637,41 @@ using is_binding_compatible = std::conditional_t<is_binding_compatible_v<T, type
16341637// }
16351638// }
16361639// }
1640+ template <typename L, typename D, typename O, typename Key, typename H, typename ... Ts>
1641+ struct IndexTable ;
1642+
1643+ template <typename T>
1644+ concept index_table = framework::is_specialization_v<T, o2::soa::IndexTable>;
16371645
16381646template <soa::ng_table T>
1639- static constexpr std::string getLabelFromType ()
1647+ static constexpr std::string getLabelForTable ()
16401648{
16411649 return std::string{o2::aod::Hash<std::decay_t <T>::originals[0 ].label_hash >::str};
16421650}
16431651
1644- template <soa::ng_iterator T>
1652+ template <soa::ng_table T>
1653+ requires (!index_table<T>)
16451654static constexpr std::string getLabelFromType ()
16461655{
1647- return getLabelFromType< typename std:: decay_t <T>:: parent_t >();
1656+ return getLabelForTable<T >();
16481657}
16491658
1650- template <typename L, typename D, typename O, typename Key, typename H, typename ... Ts >
1651- struct IndexTable ;
1652-
1653- template <typename T>
1654- concept index_table = framework::is_specialization_v<T, o2::soa::IndexTable>;
1659+ template <soa::ng_iterator T >
1660+ static constexpr std::string getLabelFromType ()
1661+ {
1662+ return getLabelForTable <typename std:: decay_t <T>:: parent_t >();
1663+ }
16551664
16561665template <index_table T>
16571666static constexpr std::string getLabelFromType ()
16581667{
1659- return getLabelFromType <typename std::decay_t <T>::first_t >();
1668+ return getLabelForTable <typename std::decay_t <T>::first_t >();
16601669}
16611670template <with_sources T>
1671+ requires (not_void<typename aod::MetadataTraitNG<o2::aod::Hash<T::ref.desc_hash>>::metadata::base_table_t >)
16621672static constexpr std::string getLabelFromType ()
16631673{
1664- return getLabelFromType <typename aod::MetadataTraitNG<o2::aod::Hash<T::ref.desc_hash >>::metadata::base_table_t >();
1674+ return getLabelForTable <typename aod::MetadataTraitNG<o2::aod::Hash<T::ref.desc_hash >>::metadata::base_table_t >();
16651675}
16661676
16671677template <typename ... C>
0 commit comments