[Libreoffice] final and override

Michael Meeks michael.meeks at suse.com
Mon Nov 28 04:27:45 PST 2011


On Mon, 2011-11-28 at 11:42 +0100, Stephan Bergmann wrote:
> On 11/28/2011 11:25 AM, Michael Meeks wrote:
> > 	On the other hand; I'd (personally) prefer to use some defines to
> > create the 'override' and 'final' keywords (as they will be in future).
> > Defining them to 'virtual' or even empty would do, if they are not
> > present in the compiler. cf. glib's provision of a stock 'inline'.
...
> One nitpick:  While it would keep the code surely more readable, it 
> would make it less standard.  For one, override and final are 
> technically not keywords in C++11, so a correct program that used them 
> as identifiers would be broken if we defined them to be empty (for a 
> compiler not yet supporting them).

	Sure - but I suspect the instance count of that is really low in our
nFinal aOverride world; a quick:

git grep final | grep \.[ch]xx
git grep override | grep \.[ch]xx

	Shows almost no problems here. 

>   For another, if override and final /were/ keywords, defining them in
> any way would result in undefined behaviour.

	Sure - which is why we'd do that for old compiler versions only; that
is what glib does for 'inline' - quite successfully. The main downside
to this might be the odd error messages when someone does:

	bool final = false;

	;-) but - apparently people don't do that. Either way, I know which I
prefer:

	final    bool methodFoo();
	virtual  char methodBaz();
	override int  methodBaa();
vs.
	SAL_FINAL    bool methodFoo()
	virtual      char methodBaz();
	SAL_OVERRIDE int  methodBaa()

	But, since there is (as yet) no patch, it's hardly worth discussing.

	;-)

		Michael.

-- 
michael.meeks at suse.com  <><, Pseudo Engineer, itinerant idiot



More information about the LibreOffice mailing list