[Development] Some Qt3D feedback

Marc Mutz marc.mutz at kdab.com
Mon Jun 15 10:18:38 CEST 2015


On Monday 15 June 2015 08:24:22 Simon Hausmann wrote:
> > QtPatternist
>
> An internal namespace, not reflected in the public API.

QtPatternist::Item appears in public functions of exported public API class 
QXmlNodeModelIndex, e.g. Yes, now I see the comment (git grep hid it).

> > QtConcurrent
> 
> A namespace for functions only, no public classes within.
> 
> > QTest
> 
> A namespace for functions only, no public classes within.

_That_ argument again... :)

Could you explain to me why you think that classes are different from 
functions, pleaae?

From a technical POV, the classes themselves have internal linkage. It's their 
member functions who have external linkage and are exported.

And run(QThreadPool*, ...) forms as much part of QThreadPool's API as does 
QThreadPool::run(QRunnable*). All non-member functions that mention a type in 
their paramater list are logically part of the type. And C++ enforces that 
(with ADL).

There's simply no difference between a class in a namespace and a free 
function in a namespace, except, of course, that after a using directive, you 
still see the class name (abridged) while you don't see the namespace for free 
functions.

So _if_ there's a qualitative difference between free functions and classes in 
namespaces, it's the free function case that should be controversial, no?

Thanks,
Marc

-- 
Marc Mutz <marc.mutz at kdab.com> | Senior Software Engineer
KDAB (Deutschland) GmbH & Co.KG, a KDAB Group Company
Tel: +49-30-521325470
KDAB - The Qt Experts



More information about the Development mailing list