Please use GitHub pull requests for new patches. Avoid migrating existing patches. Phabricator shutdown timeline
Changeset View
Changeset View
Standalone View
Standalone View
libcxx/include/__ranges/join_view.h
Show First 20 Lines • Show All 185 Lines • ▼ Show 20 Lines | private: | ||||
_LIBCPP_HIDE_FROM_ABI | _LIBCPP_HIDE_FROM_ABI | ||||
constexpr void __satisfy() { | constexpr void __satisfy() { | ||||
for (; __outer_ != ranges::end(__parent_->__base_); ++__outer_) { | for (; __outer_ != ranges::end(__parent_->__base_); ++__outer_) { | ||||
auto&& __inner = [&]() -> auto&& { | auto&& __inner = [&]() -> auto&& { | ||||
if constexpr (__ref_is_glvalue) | if constexpr (__ref_is_glvalue) | ||||
return *__outer_; | return *__outer_; | ||||
else | else | ||||
return __parent_->__cache_.__emplace_deref(__outer_); | return __parent_->__cache_.__emplace_from([&]() -> decltype(auto) { return *__outer_; }); | ||||
}(); | }(); | ||||
__inner_ = ranges::begin(__inner); | __inner_ = ranges::begin(__inner); | ||||
if (*__inner_ != ranges::end(__inner)) | if (*__inner_ != ranges::end(__inner)) | ||||
return; | return; | ||||
} | } | ||||
if constexpr (__ref_is_glvalue) | if constexpr (__ref_is_glvalue) | ||||
__inner_.reset(); | __inner_.reset(); | ||||
▲ Show 20 Lines • Show All 148 Lines • Show Last 20 Lines |