[libcxx-commits] [PATCH] D102006: [libcxx][ranges] Add range.subrange.

Zoe Carver via Phabricator via libcxx-commits libcxx-commits at lists.llvm.org
Wed May 12 17:17:05 PDT 2021

zoecarver added a comment.

> inline function -> _LIBCPP_INLINE_VISIBILITY

I thought this was only for internal functions, because public functions have stable pre/post conditions, is that not correct?

Comment at: libcxx/include/__ranges/subrange.h:40
+  template<class _Range>
+  concept sized_range = range<_Range> && requires(_Range& t) {
+    ranges::size(t);
Mordante wrote:
> Please __uglify t.
> Minor nit, since you use `_Range` instead of `_Tp`, how do you feel about using `__r` instead of `__t`?
Good idea about using `__r`. I should have documented this more clearly, but I'm going to "properly" add these concepts in a future patch. I just didn't realize they were a prerequisite until too late here, so I just copied them in. 

Comment at: libcxx/include/__ranges/subrange.h:63
+  template<class _Pair, class _Iter, class _Sent>
+  concept __pair_like_convertible_from =
Mordante wrote:
> Just curious, why these names instead of `_Tp`, `_Up`, and `_Vp`?
I think it's a bit clearer, then you don't have to map `T` to the caller and try to figure out which argument it is, you can just say, "oh that's supposed to be pair-like."

Comment at: libcxx/include/__ranges/subrange.h:161
+    constexpr make_unsigned_t<iter_difference_t<_Iter>> size() const
+      requires (_Kind == subrange_kind::sized)
Mordante wrote:
> Can you rename this to `__make_unsigned_t`?
I think this comment got moved. What do you mean?

  rG LLVM Github Monorepo



More information about the libcxx-commits mailing list