It is very difficult to work reasonably with Q_ARG and Q_RETURN_ARG when having template types. In the end I had to use meta-function for naming types like:
template< typename T >
class TypeQtName;
#define MAKE_TYPEQTNAME( T ) \
template<> \
class TypeQtName< T > \
{ \
public: \
static const char* const get() \
{ \
return #T; \
} \
}; \
MAKE_TYPEQTNAME( bool )
/* ... */
But this approach is far from being elegant.
What I think could be useful is to extend Qt so that it could locally deal with typeid result (the std::type_info class). That is not portable even across two executions of the same program in the same environment. But within a single execution it is and that does cover lots of cases.
What do you think about it?
↧