<div dir="ltr">I think this instance is just a bug.<div><br></div><div>As it was explained to me, libc++ attempts to make it possible to statically link together two libraries that use different versions of libc++ headers. These two libraries may reference inline template functions from libc++ with different definitions, but as long as all of the out-of-line symbols remain the same and implement the same functionality and use the same struct layouts, things are supposed to "work".</div><div><br></div><div>With that in mind, any inline function in libc++ that isn't always_inline or internal_linkage is probably a bug.</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Mar 31, 2017 at 10:46 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">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>
______________________________<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>