[Development] Allowed C++11 features [was: Re: Re: MSVC2012 in CI]

Marc Mutz marc.mutz at kdab.com
Mon Mar 21 12:44:34 CET 2016

On Monday 21 March 2016 12:07:24 Poenitz Andre wrote:
> Marc Mutz <marc.mutz at kdab.com> wrote:
> > I said then and I repeat it now that imho template aliases are not
> > interesting for library development. In particular, I don't think
> > something like
> > 
> > > > > template<typename T>
> > > > > using QNodeCreatedChangePtr =
> > > > > QSharedPointer<QNodeCreatedChange<T>>;
> > 
> > should be part of an API of a library. We have auto to avoid having to
> > type this type. The typedefs just hide the (essential) fact that this is
> > a shared pointer type.
> Do I understand correctly that you argue that the fact that the actual
> type is a shared pointer is so important that it shall not be hidden by
> a template alias whereas it would be completely fine to hide everything
> related to type by using auto?

Yes, you understood me correctly.

And to answer your implied objection, too:

No, there's no contradiction, because auto is for use in implementations and I 
was talking explicitly about APIs (which implies API documentation, too). It's 
one thing to write

    auto o = factory->create();

and quite another to have

   QNodeCreatedChangePtr<Foo> create() [virtual]

(to make up a plausible, but nonsensical example) in the docs.


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