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

Zoe Carver via Phabricator via libcxx-commits libcxx-commits at lists.llvm.org
Thu May 13 09:47:00 PDT 2021

zoecarver added a comment.

> AFAIK it's done for all inline functions. (I wouldn't be surprised if there are more functions not having the marker.) If you, for example, look at the <bit> header all functions have this marker. Both the public and internal functions.

`_LIBCPP_INLINE_VISIBILITY` is synonymous for `_LIBCPP_HIDE_FROM_ABI`, right? (Side-note: are we trying to move to using the latter?) Anyway, I think it's just used to inline things so they're hidden from the ABI (i.e., the function goes away so there's nothing to get baked into the ABI). However, we don't want or need public functions to be hidden from the ABI. In fact, we probably don't want them to be hidden from the ABI, so that we can still have the benefits of ABI stability, and reduced code-size.

Comment at: libcxx/include/__ranges/concepts.h:72
+template<class _Tp, class _Up>
+concept __not_same_as = !same_as<remove_cvref_t<_Tp>, remove_cvref_t<_Up>>;
Mordante wrote:
> Why not in the namespace?
I figured this is a more general utility. Not just for ranges. 

But this makes me think: it would probably be better to move this to `<concepts>`, actually. 

  rG LLVM Github Monorepo



More information about the libcxx-commits mailing list