<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Wed, Apr 15, 2015 at 10:25 PM, Peter Stirling <span dir="ltr"><<a href="mailto:peter@pjstirling.plus.com" target="_blank">peter@pjstirling.plus.com</a>></span> wrote:<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div bgcolor="#FFFFFF" text="#000000"><div>
      Visitor::RequestCompleteType() calls Sema::RequireCompleteType()
      (which IMO has the wrong name, it returns false on what I would
      consider, from the name, success).<br></div></div></blockquote><div><br></div><div>Much has been made about the sense of boolean return values in Clang. It isn't consistent or sane, but such is life. =/</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div bgcolor="#FFFFFF" text="#000000"><div>
      So, I don't construct the specializations for methods directly in
      my code, I assume that some of the instantiation is performed by
      RequireCompleteType(), but surely if I checked for SFINAE at that
      level then I would lose EVERY methods for std::pair<int const,
      int const> and not just the ones that involve mutation?</div></div></blockquote><div><br></div><div>I think RequireCompleteType won't instantiate all the member functions, like operator=, but you can look it up, and ask for an instantiation of it.</div></div></div></div>