<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Mar 18, 2015 at 6:48 PM, reed kotler <span dir="ltr"><<a href="mailto:rkotler@mips.com" target="_blank">rkotler@mips.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi David,<br>
<br>
Is there a reason that we need to have "final" for parser<bool> ???<br></blockquote><div><br>Clang has a (reasonable) warning for types with virtual functions and a non-virtual dtor. This warning is suppressed if the dtor is protected or the class is final (since in the first case it's clear that the user intends not to destroy objects via base pointers, only derived ones - and in the second case there's no risk of derived classes, so public access to the dtor is safe even without virtual dispatch.<br><br>Since the parser hierarchy never needed polymorphic destruction (all instances are concrete instances of derived classes owned and destroyed directly, not via base pointers) this seemed like a fine way to structure the API.<br> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">This breaks the compilation of mclinker which derives a class from this.<br>
<br>
In file included from /home/rkotler/workspace/<u></u>mclinker/lib/Support/<u></u>CommandLine.cpp:9:0:<br>
/home/rkotler/workspace/<u></u>mclinker/include/mcld/Support/<u></u>CommandLine.h:49:7: error: cannot derive from ‘final’ base ‘llvm::cl::parser<bool>’ in derived type ‘llvm::cl::FalseParser’<br></blockquote><div><br>Why is it being derived from? If it's just a typedef that's required, it might be more appropriate to use a typedef instead of derivation.<br> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
make[2]: *** [Support/CommandLine.o] Error 1<br>
make[2]: Leaving directory `/home/rkotler/mclinker_build/<u></u>lib'<br>
make[1]: *** [all] Error 2<br>
make[1]: Leaving directory `/home/rkotler/mclinker_build/<u></u>lib'<br>
make: *** [all-recursive] Error 1<span class="HOEnZb"><font color="#888888"><br>
<br>
<br>
<br>
Reed<br>
</font></span></blockquote></div><br></div></div>