<div dir="ltr">On Tue, Oct 29, 2013 at 1:29 AM, Rahul Jain <span dir="ltr"><<a href="mailto:1989.rahuljain@gmail.com" target="_blank">1989.rahuljain@gmail.com</a>></span> wrote:<br><div class="gmail_extra"><div class="gmail_quote">
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr"><div><div><div><div><div><div><br></div>Hi all,<br>
<br></div>This is with respect to the following TC. <br><br>struct S;<br><br>template <typename T><br>static bool fn (S *s)<br>{<br>  return typeid (*s) == typeid (T);<br>
}<br><br>struct S<br>{<br>};<br><br>bool x = fn<S> (__null);<br><br><br></div>The standard says:<br>If the type of the type-id is a class type or a reference to a class type, the class shall be completely-defined.<br>

<br><br></div>This "shall" is kind of confusing. Is this a valid TC. Is forward declaration allowed while using the typeid operator? <br></div></div></div></blockquote><div><br></div><div>No, but the rules are slightly different because this occurs inside a template. This testcase is ill-formed, but no diagnostic is required, per [temp.res](14.6)p8:</div>
<div><br></div><div><div>"If a type used in a non-dependent name is incomplete at the point at which a template is defined but is complete at the point at which an instantiation is done, and if the completeness of that type affects whether or not the program is well-formed or affects the semantics of the program, the program is ill-formed; no diagnostic is required."</div>
</div><div><br></div><div>So the template has no valid specializations. Further, we're allowed to reject this even if the template is never instantiated:</div><div><br></div><div>"If no valid specialization can be generated for a template, and that template is not instantiated, the template is ill-formed, no diagnostic required."</div>
<div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr"><div><div></div><div>Any clarification on the same would be appreciated.<br>
<br>
</div>Thanks,<br></div>Rahul<br></div>
<br>_______________________________________________<br>
cfe-dev mailing list<br>
<a href="mailto:cfe-dev@cs.uiuc.edu">cfe-dev@cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev</a><br>
<br></blockquote></div><br></div></div>