Название: QTypeInfo Отправлено: Sergeich от Апрель 17, 2008, 12:50 Наткнулся в qglobal.h на кусок кода, где определяется является ли данный тип указателем:
Код: template <typename T> char QTypeInfoHelper(T*(*)()); Название: Re: QTypeInfo Отправлено: Tonal от Апрель 17, 2008, 13:23 Работает так:
Если тип T поданный в QTypeInfo является указателем, то при вычислении компилятором выражения sizeof(QTypeInfoHelper((T(*)())0))) выбирается шаблонная версия QTypeInfoHelper и выражение принимает значение sizeof(char), т.е 1. В противном случае выбирается QTypeInfoHelper с многоточием. Техника называется SFINAE (http://"http://en.wikipedia.org/wiki/Substitution_failure_is_not_an_error") Название: Re: QTypeInfo Отправлено: Sergeich от Апрель 17, 2008, 14:59 А что значит конструкция T(*)() ?
Название: Re: QTypeInfo Отправлено: Tonal от Апрель 17, 2008, 15:43 Указатель на функцию без параметров которая возвращает T.
Название: Re: QTypeInfo Отправлено: Sergeich от Апрель 17, 2008, 18:40 Указатель на функцию без параметров которая возвращает T. мля, точно... торможу :)Название: Re: QTypeInfo Отправлено: Sergeich от Апрель 18, 2008, 10:03 Спасибо! Асилил :)
|