> Message: 1 > Date: Wed, 11 Sep 2013 19:12:26 -0700 > From: Thiago Macieira <[email protected]> > Subject: Re: [Development] constexpr and qMetaTypeId<>() > To: [email protected] > Message-ID: <3962396.DaoebYs1tu@tjmaciei-mobl2> > Content-Type: text/plain; charset="us-ascii" > > On quarta-feira, 11 de setembro de 2013 14:29:44, [email protected] > wrote: > > Hello, > > > > I'd like to use qMetaTypeId<>() in a constexpr expression. > > You can't. The types are registered at runtime. > > > Any help is greatly appreciated. > > -- > Thiago Macieira - thiago.macieira (AT) intel.com > Software Architect - Intel Open Source Technology Center
> Message: 5 > Date: Thu, 12 Sep 2013 09:47:26 +0200 > From: Stephen Kelly <[email protected]> > Subject: Re: [Development] constexpr and qMetaTypeId<>() > To: [email protected] > Message-ID: <6202252.jE7UbQaEne@hal> > Content-Type: text/plain; charset="us-ascii" > > On Wednesday, September 11, 2013 14:29:44 [email protected] wrote: > > Hello, > > > > I'd like to use qMetaTypeId<>() in a constexpr expression. I have my own > > custom type declared as such: > > > > class MyCustomClass : public QObject > > { > > Q_OBJECT > > > > // ... > > }; > > > > Q_DECLARE_METATYPE(MyCustomClass*) > > Unless you need to stay Qt 4 compatible, you can remove this line. > Pointers to > QObject derived types are automatically treated as metatypes if needed. > > > > > I then try the following: > > > > constexpr qint32 metaTypeId = qMetaTypeId<MyCustomClass*>(); > > This only works for built-in metatypes which have an id value defined in > the > QMetaType::Type enum. > > Thanks, > > -- > Join us in October at Qt Developer Days 2013 - https://devdays.kdab.com > > Stephen Kelly <[email protected]> | Software Engineer > KDAB (Deutschland) GmbH & Co.KG, a KDAB Group Company > www.kdab.com || Germany +49-30-521325470 || Sweden (HQ) +46-563-540090 > KDAB - Qt Experts - Platform-Independent Software Solutions Thank you Thiago and Stephen for the information. I am, however, still confused by both of your responses. Thiago - The qMetaTypeId documentation (http://qt-project.org/doc/qt-5.1/qtcore/qmetatype.html#qMetaTypeId) specifically states that the type registration using this function is resolved at compile-time, not run-time. Stephen - The qMetaTypeId documentation goes on to provide a code snippet where a custom type (MyStruct) is registered, so it would seem this should work for non-built-in types as well. As such, the documentation leads one to believe that qMetaTypeId can be used to register one's custom type at compile-time, as I tried to do in the code snippet in my original query. Is the documentation completely wrong or is a compile-time type registration still possible in some way? I am very interested in this, as the system I am working on would greatly benefit from this functionality. Thanks again, Alfonso _______________________________________________ Development mailing list [email protected] http://lists.qt-project.org/mailman/listinfo/development
