<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Wed, Oct 19, 2016 at 9:21 AM, Mehdi Amini <span dir="ltr"><<a href="mailto:mehdi.amini@apple.com" target="_blank">mehdi.amini@apple.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div style="word-wrap:break-word"><div><div>It seems a general issue though: how do you mix visibility hidden and external template? This is fine if you link statically, but can’t be exported outside of a DSO.</div><div>Should we design a warning for when we mix external template with visibility hidden?</div></div></div></blockquote><div><br></div><div>I don't think we should warn on that. I think if someone uses hidden visibility and extern template decls, it means they know they will statically link in a definition of that template. That seems like a legitimate use case.<br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div style="word-wrap:break-word"><div><div>Also the intent for libc++ seems that we’d like most of the class to be external template but for some method. Maybe it could be achieved with a base class that would be external template, and the derived wouldn’t? (The derived would contain the current “hidden” method).</div></div></div></blockquote><div><br></div><div>I don't think I fully understand the way the _LIBCPP_INLINE_VISIBILITY is applied to basic_string, so I couldn't say for sure. I can't tell if libc++.dylib is supposed to provide basic_string symbols or not.</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div style="word-wrap:break-word"><div>We have another thread for this: <a href="http://lists.llvm.org/pipermail/cfe-dev/2016-October/051151.html" target="_blank">http://lists.llvm.org/<wbr>pipermail/cfe-dev/2016-<wbr>October/051151.html</a> ; feel free to chime in there!</div></div></blockquote><div><br></div><div>Neat. These things get lost during post-vacation triage. =P</div></div></div></div>