Skip to content

Commit 81b066e

Browse files
burblebeetkoeppe
authored andcommitted
LWG3715 view_interface::empty is overconstrained
1 parent d6d435a commit 81b066e

File tree

1 file changed

+10
-4
lines changed

1 file changed

+10
-4
lines changed

source/ranges.tex

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1537,11 +1537,17 @@
15371537
}
15381538

15391539
public:
1540-
constexpr bool empty() requires @\libconcept{forward_range}@<D> {
1541-
return ranges::begin(@\exposid{derived}@()) == ranges::end(@\exposid{derived}@());
1540+
constexpr bool empty() requires @\libconcept{sized_range}@<D> || @\libconcept{forward_range}@<D> {
1541+
if constexpr (@\libconcept{sized_range}@<D>)
1542+
return ranges::size(@\exposid{derived}@()) == 0;
1543+
else
1544+
return ranges::begin(@\exposid{derived}@()) == ranges::end(@\exposid{derived}@());
15421545
}
1543-
constexpr bool empty() const requires @\libconcept{forward_range}@<const D> {
1544-
return ranges::begin(@\exposid{derived}@()) == ranges::end(@\exposid{derived}@());
1546+
constexpr bool empty() const requires @\libconcept{sized_range}@<const D> || @\libconcept{forward_range}@<const D> {
1547+
if constexpr (@\libconcept{sized_range}@<const D>)
1548+
return ranges::size(@\exposid{derived}@()) == 0;
1549+
else
1550+
return ranges::begin(@\exposid{derived}@()) == ranges::end(@\exposid{derived}@());
15451551
}
15461552

15471553
constexpr explicit operator bool()

0 commit comments

Comments
 (0)