<div dir="ltr">Honestly I've been wondering about the same things.<div><br></div><div>Libc++ needs to re-evaluate it's entire approach to symbol visibility especially w.r.t ABI management.</div><div>I think a lot of the existing behavior is purely historical, and newer parts of the library just try to mimic that</div><div>regardless of QoI. In particular I'm sceptical that libc++'s use of __always_inline__ helps prevent "ABI problems".</div><div><br></div><div>I would love to start a discussion on this, especially if it leads to concrete example</div><div>that can be turned into test cases</div><div><br></div><div>/Eric</div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Mar 31, 2017 at 11:57 PM, Mehdi Amini via cfe-dev <span dir="ltr"><<a href="mailto:cfe-dev@lists.llvm.org" target="_blank">cfe-dev@lists.llvm.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Similarly with the public free template functions:<br>
<br>
<br>
template <class _L0, class _L1><br>
void<br>
lock(_L0& __l0, _L1& __l1)<br>
<br>
and<br>
<br>
template <class _L0, class _L1, class _L2, class ..._L3><br>
inline _LIBCPP_INLINE_VISIBILITY<br>
void<br>
lock(_L0& __l0, _L1& __l1, _L2& __l2, _L3& …__l3)<br>
<br>
<br>
—<br>
Mehdi<br>
<div><div class="h5"><br>
<br>
<br>
> On Mar 31, 2017, at 10:46 PM, Mehdi Amini via cfe-dev <<a href="mailto:cfe-dev@lists.llvm.org">cfe-dev@lists.llvm.org</a>> wrote:<br>
><br>
> Hi,<br>
><br>
> I’m wondering about libc++ visibility for the internals of the library. For example why do we define:<br>
><br>
> _LIBCPP_INLINE_VISIBILITY<br>
>    void __construct_at_end(size_type __n, const_reference __x);<br>
><br>
> with inline/hidden visibility, but not this one:<br>
><br>
> template <class _ForwardIterator><br>
> typename enable_if  <__is_forward_iterator<_<wbr>ForwardIterator>::value, void>::type<br>
> __construct_at_end(_<wbr>ForwardIterator __first, _ForwardIterator __last, size_type __n);<br>
><br>
><br>
> Thanks,<br>
><br>
> —<br>
> Mehdi<br>
><br>
</div></div>> ______________________________<wbr>_________________<br>
> cfe-dev mailing list<br>
> <a href="mailto:cfe-dev@lists.llvm.org">cfe-dev@lists.llvm.org</a><br>
> <a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/<wbr>mailman/listinfo/cfe-dev</a><br>
<br>
______________________________<wbr>_________________<br>
cfe-dev mailing list<br>
<a href="mailto:cfe-dev@lists.llvm.org">cfe-dev@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/<wbr>mailman/listinfo/cfe-dev</a><br>
</blockquote></div><br></div>