[Development] Don't use Private *d when your class is immutable

Thiago Macieira thiago.macieira at intel.com
Fri Mar 3 16:11:54 CET 2017


Em sexta-feira, 3 de março de 2017, às 03:19:42 PST, Marc Mutz escreveu:
> The simplest implementation of an immutable class that cannot or should not
> contain all state inline (like QRect) is an int +
> Q_GLOBAL_STATIC(Container). If you put all init code into the ctor of the
> Container class, then you get thread-saftey for free, too. Only if you want
> to add entries dynamically you need to think about threading. And all the
> special member functions come for free, too, fully optimal (nothrow,
> inline).

Sorry, no.

If you need to have a global static to store information, then it sounds 
wrong. I agree we should use ints, enums and opaque pointers when wrapping a 
third-party API that is like that. If they have a global table, that's their 
business.

But we should not add more global tables.

-- 
Thiago Macieira - thiago.macieira (AT) intel.com
  Software Architect - Intel Open Source Technology Center




More information about the Development mailing list