шаблонное метапрограммирование — типы функций c ++ в typedefs

Почему следующее объявление typedef для типа функции не компилируется?

typedef void( int ) void_from_int_t;

1

Решение

Так должно быть typedef void(void_from_int_t)(int); и т. д. Декларация следует за использованием, спиральное правило, или как там у вас любимая мнемоника.

2

Другие решения

В общем, чтобы создать определение типа, просто добавьте typedef к определению переменной:

// array of ten integers, instance and type
int a[10];
typedef int a_t[10];
// function, declaration and type
void function(int);
typedef void function_t(int);

Обратите внимание, что это тип функции, а не тип указателя на функцию, который вы получите, добавив звездочку:

function_t* pf = &function;
0

По вопросам рекламы [email protected]