Как может я понимать то, что объявляется здесь: (это взято из другого сообщения на этом форуме),
template static char (&f(ChT*))[1];
Вот то, как я читал:
шаблон статической функции f
названный с (ChT
, но затем я не могу иметь смысла, почему там операция вычисления адреса и почему там массив?
Я все еще изучаю, как понять объявления C++, поэтому объясняйте это медленно и тщательно.
Важно видеть возвращаемый тип.
Итак, возвращаемый тип этой функции - ссылка на char [1]
; {{1} } Представьте, что f
возвращает что-то вроде ссылки на следующее:
char ret[1];
Например,
template<typename C> static char (&f(ChT<int Fallback::*, &C::x>*))[1]
{
static char xx[1] = {'F'};
return xx;
}
Использование некоторых определений типов:
typedef char (&arrayref_t)[1];
Это ссылка на массив символов. В массиве один элемент.
typedef ChT<int Fallback::*, &C::x> tmpl_t;
Это шаблонный класс, экземпляр которого создается с помощью типа «указатель на член int
класса Fallback
» и указатель элемента на x
в класс C
.
static arrayref_t f(tmpl_t*);
Теперь функция принимает указатель на tmpl_t
и возвращает arrayref_t
.