<div dir="ltr"><div><br></div><div class="gmail_extra"><br><div class="gmail_quote">2016-12-22 19:00 GMT+01:00 Jared Grubb <span dir="ltr"><<a href="mailto:jared.grubb@gmail.com" target="_blank">jared.grubb@gmail.com</a>></span>:<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>-others because I'm unsure :)</div><div><br></div><div>Arent there some forms of RTTI that are not available unless you have a virtual function? I swear i ran into a case where I added virtual functions to a class solely because I needed it to behave well in a place where RTTI was used.</div><div><br></div><div>Jared</div><br></div></blockquote><div><div>+ Rest</div>That's a valid concern, I am not really sure. But does it make sense to use RTTI on "static" classes like this?<div>I never worked on code base that would use RTTI, it was always some hand crafted solutions, so I am not really familiar with this problem.</div><div><br></div><div>Piotr</div></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><div class="gmail-h5"><blockquote type="cite"><div>El dic. 21, 2016, a las 17:24, Piotr Padlewski via cfe-dev <<a href="mailto:cfe-dev@lists.llvm.org" target="_blank">cfe-dev@lists.llvm.org</a>> escribió:</div><br class="gmail-m_-3089803229028377671Apple-interchange-newline"><div><div dir="ltr">Hi,<div>I was wondering if we should warn about cases like this:</div><div><br></div><div><p class="gmail-m_-3089803229028377671m_4135058122452041982gmail-p1"><span class="gmail-m_-3089803229028377671m_4135058122452041982gmail-s1"><b>struct</b></span><span class="gmail-m_-3089803229028377671m_4135058122452041982gmail-s2"> </span><span class="gmail-m_-3089803229028377671m_4135058122452041982gmail-s3">A</span><span class="gmail-m_-3089803229028377671m_4135058122452041982gmail-s2"> </span><span class="gmail-m_-3089803229028377671m_4135058122452041982gmail-s4">final</span><span class="gmail-m_-3089803229028377671m_4135058122452041982gmail-s2"> </span><span class="gmail-m_-3089803229028377671m_4135058122452041982gmail-s3">{</span></p><p class="gmail-m_-3089803229028377671m_4135058122452041982gmail-p1"><span class="gmail-m_-3089803229028377671m_4135058122452041982gmail-s2">   </span><span class="gmail-m_-3089803229028377671m_4135058122452041982gmail-s1"><b>virtual</b></span><span class="gmail-m_-3089803229028377671m_4135058122452041982gmail-s2"> </span><span class="gmail-m_-3089803229028377671m_4135058122452041982gmail-s1"><b>int</b></span><span class="gmail-m_-3089803229028377671m_4135058122452041982gmail-s2"> </span><span class="gmail-m_-3089803229028377671m_4135058122452041982gmail-s3">foo</span><span class="gmail-m_-3089803229028377671m_4135058122452041982gmail-s2"> </span><span class="gmail-m_-3089803229028377671m_4135058122452041982gmail-s3">()</span><span class="gmail-m_-3089803229028377671m_4135058122452041982gmail-s2"> </span><span class="gmail-m_-3089803229028377671m_4135058122452041982gmail-s3">{</span><span class="gmail-m_-3089803229028377671m_4135058122452041982gmail-s1"><b>return</b></span><span class="gmail-m_-3089803229028377671m_4135058122452041982gmail-s2"> </span><span class="gmail-m_-3089803229028377671m_4135058122452041982gmail-s5">42</span><span class="gmail-m_-3089803229028377671m_4135058122452041982gmail-s3">;}</span></p><p class="gmail-m_-3089803229028377671m_4135058122452041982gmail-p1"><span class="gmail-m_-3089803229028377671m_4135058122452041982gmail-s3">   // virtual doesn't make any sense because it is final base class</span></p><p class="gmail-m_-3089803229028377671m_4135058122452041982gmail-p2"><span class="gmail-m_-3089803229028377671m_4135058122452041982gmail-s1">};</span></p><p class="gmail-m_-3089803229028377671m_4135058122452041982gmail-p2"><span class="gmail-m_-3089803229028377671m_4135058122452041982gmail-s1"><br></span></p><p class="gmail-m_-3089803229028377671m_4135058122452041982gmail-p2"><span class="gmail-m_-3089803229028377671m_4135058122452041982gmail-s1">or</span></p><p class="gmail-m_-3089803229028377671m_4135058122452041982gmail-p2"><span class="gmail-m_-3089803229028377671m_4135058122452041982gmail-s1"><br></span></p><p class="gmail-m_-3089803229028377671m_4135058122452041982gmail-p1"><span class="gmail-m_-3089803229028377671m_4135058122452041982gmail-s1"><b>struct</b></span><span class="gmail-m_-3089803229028377671m_4135058122452041982gmail-s2"> </span><span class="gmail-m_-3089803229028377671m_4135058122452041982gmail-s3">A</span><span class="gmail-m_-3089803229028377671m_4135058122452041982gmail-s2"> </span><span class="gmail-m_-3089803229028377671m_4135058122452041982gmail-s3">{</span></p><p class="gmail-m_-3089803229028377671m_4135058122452041982gmail-p1"><span class="gmail-m_-3089803229028377671m_4135058122452041982gmail-s2">  </span><span class="gmail-m_-3089803229028377671m_4135058122452041982gmail-s1"><b>virtual</b></span><span class="gmail-m_-3089803229028377671m_4135058122452041982gmail-s2"> </span><span class="gmail-m_-3089803229028377671m_4135058122452041982gmail-s1"><b>int</b></span><span class="gmail-m_-3089803229028377671m_4135058122452041982gmail-s2"> </span><span class="gmail-m_-3089803229028377671m_4135058122452041982gmail-s3">foo</span><span class="gmail-m_-3089803229028377671m_4135058122452041982gmail-s2"> </span><span class="gmail-m_-3089803229028377671m_4135058122452041982gmail-s3">()</span><span class="gmail-m_-3089803229028377671m_4135058122452041982gmail-s2"> final </span><span class="gmail-m_-3089803229028377671m_4135058122452041982gmail-s3">{</span><span class="gmail-m_-3089803229028377671m_4135058122452041982gmail-s1"><b>return</b></span><span class="gmail-m_-3089803229028377671m_4135058122452041982gmail-s2"> </span><span class="gmail-m_-3089803229028377671m_4135058122452041982gmail-s5">42</span><span class="gmail-m_-3089803229028377671m_4135058122452041982gmail-s3">;}</span></p><p class="gmail-m_-3089803229028377671m_4135058122452041982gmail-p1"><span class="gmail-m_-3089803229028377671m_4135058122452041982gmail-s3">  // the same thing</span></p><div><span class="gmail-m_-3089803229028377671m_4135058122452041982gmail-s1">









</span><br class="gmail-m_-3089803229028377671webkit-block-placeholder"></div><p class="gmail-m_-3089803229028377671m_4135058122452041982gmail-p2"><span class="gmail-m_-3089803229028377671m_4135058122452041982gmail-s1">};</span></p><p class="gmail-m_-3089803229028377671m_4135058122452041982gmail-p2"><span class="gmail-m_-3089803229028377671m_4135058122452041982gmail-s1"><br></span></p><p class="gmail-m_-3089803229028377671m_4135058122452041982gmail-p2"><span class="gmail-m_-3089803229028377671m_4135058122452041982gmail-s1">So in both cases it sounds like a bug, specially in the first case. </span></p><p class="gmail-m_-3089803229028377671m_4135058122452041982gmail-p2">I don't see any resonable cases where this code would make sense (what you could not achieve with override keyword).</p></div></div></div></blockquote><div><br></div></div></div><blockquote type="cite"><div><div><div class="gmail-h5"><div dir="ltr"><div><p class="gmail-m_-3089803229028377671m_4135058122452041982gmail-p2"><br></p><p class="gmail-m_-3089803229028377671m_4135058122452041982gmail-p2">If emiting warning in these cases make sense, dibs on that feature.</p><p class="gmail-m_-3089803229028377671m_4135058122452041982gmail-p2"><br></p><p class="gmail-m_-3089803229028377671m_4135058122452041982gmail-p2">Piotr</p></div></div></div></div>
______________________________<wbr>_________________<br>cfe-dev mailing list<br><a href="mailto:cfe-dev@lists.llvm.org" target="_blank">cfe-dev@lists.llvm.org</a><br><a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev" target="_blank">http://lists.llvm.org/cgi-bin/<wbr>mailman/listinfo/cfe-dev</a><br></div></blockquote></div><br></div></blockquote></div><br></div></div>