view: unchecked_refresh function
This commit is contained in:
@@ -223,6 +223,11 @@ class basic_view<get_t<Get...>, exclude_t<Exclude...>> {
|
||||
return other;
|
||||
}
|
||||
|
||||
void unchecked_refresh() noexcept {
|
||||
view = std::get<0>(pools);
|
||||
std::apply([this](auto *, auto *...other) { ((this->view = other->size() < this->view->size() ? other : this->view), ...); }, pools);
|
||||
}
|
||||
|
||||
template<std::size_t Curr, std::size_t Other, typename... Args>
|
||||
[[nodiscard]] auto dispatch_get(const std::tuple<underlying_type, Args...> &curr) const {
|
||||
if constexpr(Curr == Other) {
|
||||
@@ -277,7 +282,7 @@ public:
|
||||
: pools{&value...},
|
||||
filter{&excl...},
|
||||
view{} {
|
||||
refresh();
|
||||
unchecked_refresh();
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -308,8 +313,9 @@ public:
|
||||
|
||||
/*! @brief Updates the internal leading view if required. */
|
||||
void refresh() noexcept {
|
||||
view = std::get<0>(pools);
|
||||
std::apply([this](auto *, auto *...other) { ((this->view = other->size() < this->view->size() ? other : this->view), ...); }, pools);
|
||||
if(std::apply([](const auto *...curr) { return ((curr != nullptr) && ...); }, pools)) {
|
||||
unchecked_refresh();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user