[Development] Some Qt3D feedback

Marc Mutz marc.mutz at kdab.com
Mon Jun 15 22:26:05 CEST 2015


On Monday 15 June 2015 21:01:54 André Pönitz wrote:
> if so:
> 
>     Please explain how that avoids name clashes.

You only need to add the prefix when the compiler tells you. E.g. if you use 
QtGui::QTransform in one file and Qt3D::QTransform in another, in the same 
project, you can write QTransform in both, without ambiguity. Only when you 
need both in the same TU _and_ you using-direct _both_, you need to prefix 
QtGui:: or Qt3D::, but only for QTransform, not, say, QAspectThread.

> else:
> 
>     Please explain how "QFoo::Bar" (or the even longer QtFoo::Bar,
>     or QFoo::QBar or QtFoo::Bar) is not more onerous than "QFooBar"

Purely a matter of personal style. Given that the rest of the world has 
happily lived with a standard library in namespace std, I fail to see how Qt 
being inconsistent with the rest of the C++ world on something that is not 
part of its core competency is something good.

How about we make syncqt create a header with typedefs QtFoo::QBar -> QFooBar? 
:)

> 
> Your "Although we could recommend people to not use using directives we
> can't enforce it (nor should we)" indicates a preference for the 'else'
> branch (expectedly so), but I'd appreciate to see the reasoning why
> having to type '::' (and possibly 't' and a second 'Q') can be seen
> positively at all

Namespaces partition not only the name space, but also ADL spaces. The larger 
the project, the more important restricting all-too far-reaching ADL becomes.

As a practical example: We could import std::rel_ops into namespace Qt3D, and 
would never have^Wforget to write op!=, op>, op<= and op>= again anymore, in 
Qt3D, because they are synthesized from op== and op<, resp. We cannot do that 
in the global namespace, because it would affect user code.

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