@@ -1728,7 +1728,8 @@ class Table
17281728 using columns_t = typename Parent::columns_t ;
17291729 using external_index_columns_t = typename Parent::external_index_columns_t ;
17301730 using bindings_pack_t = decltype ([]<typename ... C>(framework::pack<C...>) -> framework::pack<typename C::binding_t ...> {}(external_index_columns_t {}));
1731- static constexpr const std::array<TableRef, sizeof ...(T)> originals{T::ref...};
1731+ // static constexpr const std::array<TableRef, sizeof...(T)> originals{T::ref...};
1732+ static constexpr auto originals = Parent::originals;
17321733 using policy_t = IP;
17331734 using parent_t = Parent;
17341735
@@ -1741,7 +1742,7 @@ class Table
17411742
17421743 template <typename P, typename ... Os>
17431744 TableIteratorBase& operator =(TableIteratorBase<IP, P, Os...> other)
1744- requires (P::ref::signature == Parent::ref::signature )
1745+ requires (P::ref.desc_hash == Parent::ref.desc_hash )
17451746 {
17461747 static_cast <base_iterator<IP>&>(*this ) = static_cast <base_iterator<IP>>(other);
17471748 return *this ;
@@ -1762,16 +1763,16 @@ class Table
17621763 return *this ;
17631764 }
17641765
1765- template <typename P, typename ... Os>
1766- TableIteratorBase (TableIteratorBase<IP, P, Os...> const & other)
1767- requires (P::ref::signature == Parent::ref::signature )
1766+ template <typename P, typename O1, typename ... Os>
1767+ TableIteratorBase (TableIteratorBase<IP, P, O1, Os...> const & other)
1768+ requires (P::ref.desc_hash == Parent::ref.desc_hash )
17681769 {
17691770 *this = other;
17701771 }
17711772
1772- template <typename P, typename ... Os>
1773- TableIteratorBase (TableIteratorBase<IP, P, Os...>&& other) noexcept
1774- requires (P::ref::signature == Parent::ref::signature )
1773+ template <typename P, typename O1, typename ... Os>
1774+ TableIteratorBase (TableIteratorBase<IP, P, O1, Os...>&& other) noexcept
1775+ requires (P::ref.desc_hash == Parent::ref.desc_hash )
17751776 {
17761777 *this = other;
17771778 }
@@ -2503,7 +2504,7 @@ consteval auto getIndexTargets()
25032504 for (auto const & i : *mColumnIterator ) { \
25042505 auto pos = mBinding .get <T>()->isInSelectedRows (i); \
25052506 if (pos > 0 ) { \
2506- result.push_back (mBinding .get <T>()->iteratorAt (pos)); \
2507+ result.emplace_back (mBinding .get <T>()->iteratorAt (pos)); \
25072508 } \
25082509 } \
25092510 return result; \
@@ -3471,9 +3472,10 @@ template <typename T>
34713472class Filtered : public FilteredBase <T>
34723473{
34733474 public:
3474- using base_t = T ;
3475+ using base_t = FilteredBase<T> ;
34753476 using self_t = Filtered<T>;
3476- using table_t = typename FilteredBase<T>::table_t ;
3477+ using table_t = typename T::table_t ;
3478+ using columns_t = typename T::columns_t ;
34773479
34783480 using iterator = T::template iterator_template_o<FilteredIndexPolicy, self_t >;
34793481 using unfiltered_iterator = T::template iterator_template_o<DefaultIndexPolicy, self_t >;
@@ -3633,9 +3635,10 @@ class Filtered<Filtered<T>> : public FilteredBase<typename T::table_t>
36333635 using self_t = Filtered<Filtered<T>>;
36343636 using base_t = T;
36353637 using table_t = typename FilteredBase<typename T::table_t >::table_t ;
3638+ using columns_t = typename T::columns_t ;
36363639
3637- using iterator = FilteredBase<typename T::table_t >::iterator;
3638- using unfiltered_iterator = FilteredBase<typename T::table_t >::unfiltered_iterator;
3640+ using iterator = typename T:: template iterator_template_o<FilteredIndexPolicy, self_t > ; // FilteredBase<typename T::table_t>::iterator;
3641+ using unfiltered_iterator = typename T:: template iterator_template_o<DefaultIndexPolicy, self_t > ; // FilteredBase<typename T::table_t>::unfiltered_iterator;
36393642 using const_iterator = iterator;
36403643
36413644 iterator begin ()
0 commit comments